Laravel Eloquent return 当第一个条件不存在时有条件 return 另一个
Laravel Eloquent return conditionally when first condition not exists return another
我使用 Eloquent 获取多语言 post 标题。
public function getTitle_en()
{
return $this->hasOne(Meta::class, 'post_id')->where(['cat' => 'title', 'meta_name' => 'en']);
}
这个return英文标题,但有时英文标题不存在所以我想return另一种语言的标题。
我的意思是当使用 getTitle_en 获得英文标题时 (['cat' => 'title', 'meta_name' => 'en']) ,如果不存在 return 另一种语言的标题,如“nl”,如果是“nl” (['cat' => 'title', 'meta_name' => 'nl']) 在另一种语言如“gr”中不存在return。
所以我想Eloquent检查我的table(元)中是否存在英文标题然后return它,否则如果英文标题不存在,检查“nl”标题如果它存在 return 否则检查下一个语言
您可以使用此解决方案:
$query->orderByRaw("FIELD(status, '2', '1', '3')")
只需将 where()
方法更改为接受函数即可。有关详细信息,请参阅 。
我使用 Eloquent 获取多语言 post 标题。
public function getTitle_en()
{
return $this->hasOne(Meta::class, 'post_id')->where(['cat' => 'title', 'meta_name' => 'en']);
}
这个return英文标题,但有时英文标题不存在所以我想return另一种语言的标题。
我的意思是当使用 getTitle_en 获得英文标题时 (['cat' => 'title', 'meta_name' => 'en']) ,如果不存在 return 另一种语言的标题,如“nl”,如果是“nl” (['cat' => 'title', 'meta_name' => 'nl']) 在另一种语言如“gr”中不存在return。
所以我想Eloquent检查我的table(元)中是否存在英文标题然后return它,否则如果英文标题不存在,检查“nl”标题如果它存在 return 否则检查下一个语言
您可以使用此解决方案:
$query->orderByRaw("FIELD(status, '2', '1', '3')")
只需将 where()
方法更改为接受函数即可。有关详细信息,请参阅