我有一个能言善辩的字母数字模型 slug
字段(不是主键)。
我正在实施 getNextAttribute()
以及 getPreviousAttribute()
自定义getter,其目的是:
急切地在按字母顺序排列的记录列表中预加载记录的“邻居” slug
;
预加载 null
如果当前记录在终端位置。
(把它想象成一个字典条目表。它们是按术语排序的,预加载下一个和上一个条目是合乎逻辑的。)
如何最佳地解决这样的问题?也许我已经搞错了?
我没说清楚。
鉴于我们有一个 records
表格:
id slug
-- ----
1 Tango
2 Alpha
3 Zulu
4 Bravo
5 Zulu
6 Foxtrot
我们走的时候:
$record = App\Record::where('id', 5)->get();
那么我们应该得到:
$this->assertEquals(null, $record->next);
$this->assertEquals(3, $record->previous->id);
1条答案
按热度按时间kq0g1dla1#
我有一个类似的问题,但与数字排序。最后,我提取了所有模型的集合,然后使用first和last函数来获取next和previous。
在您的记录模型中推断您的案例:
如果记录是集合中的第一个或最后一个,则自动返回null。