如何通过与第一个馆藏有关的记录找到馆藏

时间:2019-06-04 11:46:09

标签: php laravel mongodb jenssegers-mongodb

我需要找到一组集合,其中搜索基于相关模型上的记录。 为了让您理解我需要让用户使用与我的搜索输入类似的公司名称。

这是我尝试过的:

$users = App\User::with(['company' => function ($query) {
    $query->where('company_name', 'like', '%'.$searchInput.'%');
}])->paginate(10);

说实话,我花了数小时但没有运气。我在laravel 5.8上使用jenseggers/mongodb

1 个答案:

答案 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