我有一个产品模型。
我想获取下一个先前的产品,该产品由name
而不是id
订购。
这就是我现在拥有的:
public function getNextAttribute() {
return FontFamily::select('id', 'name')->where('id', '>', $this->id)->orderBy('name', 'asc')->first() ?? FontFamily::first();
}
public function getPreviousAttribute() {
return FontFamily::select('id', 'name')->where('id', '<', $this->id)->orderBy('name', 'desc')->first() ?? FontFamily::latest()->first();
}
但是使用orderBy('name')
并不能解决问题,因为我接下来要了解的不是基于id
,而是基于name
。
感谢任何帮助!
答案 0 :(得分:1)
您的条件也应在名称上,而不在ID上:
public function getNextAttribute() {
return FontFamily::select('id', 'name')->where('name', '>', $this->name)->orderBy('name', 'asc')->first() ?? FontFamily::first();
}
public function getPreviousAttribute() {
return FontFamily::select('id', 'name')->where('name', '<', $this->name)->orderBy('name', 'desc')->first() ?? FontFamily::latest()->first();
}