2016-03-02 64 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