查询相关数据的构建器结构

时间:2015-07-20 05:13:53

标签: php mysql eloquent laravel-5

使用我当前的数据,如果我在控制器中创建一个查询:

$users = User::with('skills')
->with('skills')
->with('positions')
->orWhereHas('positions', function($thisquery) use ($positions)
{
    $thisquery->whereIn('name', $positions);
})
->get();

返回正确的结果。

但是如果我创建这样的查询:

$users = User::with('skills');
$users->with('skills');
$users->with('positions');
$users->orWhereHas('positions', function($thisquery) use ($positions)
{
    $thisquery->whereIn('name', $positions);
})
$users->get();

没有返回任何数据。

我原本以为两者会是一样的,但显然我错过了一些要点 - 结果不同的原因是什么?

1 个答案:

答案 0 :(得分:1)

您应该尝试像这样分配get()方法结果:

$users = $users->get();

链式方法通常通过返回对象来工作。您的get()方法返回一个集合。因此,您应该将其分配给某个变量,以便以后以某种方式使用它。

你也可以考虑重命名$users变量,尽管我也会这样做。