2016-03-02 69 views
0

我有一个全局变量,我需要传递给我的查询:全局变量不可用于查询约束在laravel渴望负荷

$size = (user input) 

$name = (user input) 

$items = Items::with('color')->with(['size' => function ($query){ 

       $query->where('meters', '=', $size); 
      }]) 

       ->where('item_name', '=', $name) 
       ->get(); 

与此查询的问题是$ color变量不在可用闭包:我真的需要加载数据而不是连接表,因为我已经定义了视图中使用的变量。 如何将该变量传递给闭包?

回答

0

你只需将它传递给你的函数。

$items = Items::with('color')->with(['size' => function ($query, $size) { 

      $query->where('meters', '=', $size); 
     }]) 

      ->where('item_name', '=', $text) 
      ->get(); 
+0

不起作用,它抛出这个错误:缺少参数2为App \ HTTP \控制器\ ItemController ::应用程序\ HTTP \控制器\ {}关闭() – Chriz74

+0

对不起,人不能用“使用” – Chriz74

+0

噢等等对不起我误解了代码。 $ color是在哪里来定义的? –

1

如何

$size = '(size value)'; 
$items = Items::with('color') 
    ->whereHas('size', function ($query) use ($size) { 
     $query->where('meters', $size); 
    }) 
    ->where('item_name', $name) 
    ->get(); 
+0

没有找到他的大小列,这一个不eagerLoad大小 – Chriz74

+0

等待,是'大小'项目中的关系或列? – alepeino

+0

这是一种关系 – Chriz74