我有两个链接的模型:jobs
和job_translations
。一份工作有很多翻译。在我的工作模型中,有:
/**
* Get the translations for the job.
*/
public function translations()
{
return $this->hasMany('App\Models\JobTranslation');
}
在我的控制器中,我想像这样动态地构建查询:
$query = Job::query();
if ($request->has('translation')) {
$query->translations()->where('external_translation', 'ilike', '%'.$request->translation.'%');
}
$jobs = $query->paginate(10);
我遇到此错误:
调用未定义的方法Illuminate \ Database \ Eloquent \ Builder :: translations()
是否可以用口才做这样的动态查询?
答案 0 :(得分:1)
是的,有可能。您正在寻找的是itemIndexPath
而不是whereHas('translations', $callback)
:
translations()
使用$query = Job::query();
if ($request->has('translation')) {
$query->whereHas('translations', function ($query) use ($request) {
$query->where('external_translation', 'ilike', '%'.$request->translation.'%');
});
}
$jobs = $query->paginate(10);
代替when($condition, $callback)
可以进一步改善您的查询:
if
答案 1 :(得分:0)
您应该急于在下一个链接查询中检测到的问题是这样的:
.style