首页 > 解决方案 > 当第一个条件不存在时,Laravel Eloquent 有条件地返回返回另一个

问题描述

我使用Eloquent获取多语言帖子标题。

    public function getTitle_en()
{
    return $this->hasOne(Meta::class, 'post_id')->where(['cat' => 'title', 'meta_name' => 'en']);
}

这返回英文标题,但有时英文标题不存在,所以我想用另一种语言返回标题。

我的意思是当使用getTitle_en获取英文标题时(['cat' => 'title', 'meta_name' => 'en']),如果它不存在返回另一种语言的标题,如“nl”,如果是“nl” ( ['cat' => 'title', 'meta_name' => 'nl'] ) 不存在返回另一种语言,如“gr”。

所以我想要 Eloquent 检查我的表(元)中是否存在英文标题然后返回它,否则如果英文标题不存在,检查“nl”标题如果它存在返回否则检查下一种语言

标签: phplaraveleloquentconditional-statements

解决方案


您可以使用此解决方案:

$query->orderByRaw("FIELD(status, '2', '1', '3')")

只需将您的where()方法更改为接受功能。有关更多详细信息,请参见此处


推荐阅读