我如何通过与第一个集合相关的记录找到集合

How do i find collection through a record related to the first collection

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

这是我试过的方法:

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

老实说,我为此花了好几个小时,但没有成功。我在 laravel 5.8 上使用 jenseggers/mongodb

您应该将 ::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