Laravel RelationShip(加入 where)

gib*_*lex 0 php laravel laravel-5

我需要 Laravel 5 的帮助(使用 Eloquent)

我有两张桌子...

模型驱动程序

  • ID
  • 公司

型号 DriverOnline drivers_online

  • ID
  • 姓名
  • driver_id

我需要在 (company=1 and driver_id=driver.id) 上搜索结果。

请帮我!

Jos*_*osh 5

如果您只想Driver根据条件获取,您可以这样做:

Driver::with('online')->where('company', 1)->get();
Run Code Online (Sandbox Code Playgroud)

如果子句在关系上,请使用with并指定一个查询。

$company = 1;
$drivers = Driver::with(['online' => function($query) use ($company)
{
    $query->where('company', $company);
}]);
Run Code Online (Sandbox Code Playgroud)

请参阅“急切负载约束”:https :
//laravel.com/docs/5.0/eloquent

注意我的use. 这允许您将范围内的变量包含到您的 Closure 实例中。

请注意,如果您使用任一解决方案,则必须建立关系。请参阅我分享的链接,了解更多相关信息。

编辑:根据我们的谈话。

$drivers = Driver::where('company_id','=',1)
    ->with('driversOnline')
    ->whereHas('driversOnline', function($query) {
        $query->where('online','=',1);
    })
    ->get();
Run Code Online (Sandbox Code Playgroud)