php - 当第一个条件不存在时,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”标题如果它存在返回否则检查下一种语言
解决方案
您可以使用此解决方案:
$query->orderByRaw("FIELD(status, '2', '1', '3')")
只需将您的where()
方法更改为接受功能。有关更多详细信息,请参见此处。
推荐阅读
- microsoft-graph-api - 如何像微软团队一样请求获取租户的所有信息?
- react-native - TypeError:在 React Native 上使用 StorybookJS 将循环结构转换为 JSON
- package - Common lisp——为什么这个符号不是外部的?
- git - 从主分支合并到发布分支后,Visual Studio 2017 未暂存的更改消失
- python-3.x - 如何使用 Pillow(PIL) 以 300 dpi 保存文件?
- ffmpeg - ffmpeg 从文件中读取并立即应用 filter_complex
- python - ValueError:python 2中“str”类型对象的未知格式代码“x”
- java - VSCode 中没有安装“java”文件的格式化程序
- jenkins - 如何在 Jenkins 中找出 gradle 执行任务的定义
- c++ - 将结构发送到函数 C++