【问题标题】:Eager loading with parameters - laravel带有参数的渴望加载 - laravel
【发布时间】:2015-02-23 01:08:54
【问题描述】:

我有Banks 表和带有services 的单独表

$bank = Banks::find(1);
echo $bank->service(1); // print bank with that service (serviceId 1)

可以预先加载所有 service_id =1 ..有点像的银行

Bank::with('service(1)')->get();

提前谢谢你

【问题讨论】:

  • 你的意思是这样做 where service_id in (1) inside model ?

标签: php sql laravel orm eager-loading


【解决方案1】:

你可以用这个

return User::with(['posts' => function($query){
              $query->whereNotIn('id',[1]);
            }])
           ->get();

【讨论】:

    【解决方案2】:

    当然! with 方法接受一个闭包来过滤预先加载。

    Bank::with(array('service' => function($query){
        $query->where('id', 1);
    }))->get();
    

    【讨论】:

    • 你可以使用 "use" `Bank::with(array('service' => function($query) use ($param){ $query->where( 'id', $param); }))->get(); `
    • @Tom,你拯救了我的一天!我一直在寻找这个一个小时,直到现在我还没有找到任何人指定如何在这里传递参数。谢谢!!!
    【解决方案3】:

    在你的模型中使用 WhereIn,你应该在数组中传递任何数字。

    $Data = Banks::whereIn('service_id ', array(1, 2, 3))->get();
    var_dump($Data);
    

    我正在使用var_dump,您应该选择自己的列来满足您的需求。

    文档:EloquentAdvance Where

    【讨论】:

      猜你喜欢
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      相关资源
      最近更新 更多