我需要找到一组集合,其中搜索基于相关模型上的记录。 为了让您理解我需要让用户使用与我的搜索输入类似的公司名称。
这是我尝试过的:
$users = App\User::with(['company' => function ($query) {
$query->where('company_name', 'like', '%'.$searchInput.'%');
}])->paginate(10);
说实话,我花了数小时但没有运气。我在laravel 5.8上使用jenseggers/mongodb
。
答案 0 :(得分:1)
您应在查询中添加::whereHas()
,这将限制查询结果,其中company
类似于搜索查询。
此外,您需要将::with()
闭包更改为::with('companies')
。
$users = App\User::whereHas('company', function ($query) use ($searchInput) {
$query->where('company_name', 'like', '%'.$searchInput.'%');
})
->with('company')
->paginate(10);
请注意use ($searchInput)
。
还要检查用户关系是否是companies
而不是company
。