2014-01-30 130 views
0

我有一個Quote雄辯模型有幾個關係,其中之一是Customer。我正在編寫一個搜索控制器,它接受查詢,然後搜索模型。如果我不需要搜索自定義關係,我可以輕鬆地做到這一點:雄辯地從句

$Quote = Quote::where('trashed', '0'); // Never get trashed items. 
$Quote->where('item', 'LIKE', '%'.$searchQuery.'%'); 

作品一種享受。

但是,如果我想搜索的所有報價,而是由客戶名稱:

$Quote = Quote::where('trashed', '0'); // Never get trashed items.  
$Quote = $Quote->with(['Customer' => function($Query) use ($searchQuery) { 
    $Query->where('e_mail', 'LIKE', '%'.$searchQuery.'%'); 
}]); 

所有這一切都做的是說「加入有像$searchQuery名客戶。如果我移動where條款。是with方法之後,就不能訪問e_mail

那麼,如何尋找引號,但如果客戶是等於別的

回答

0

我設法用whereHas代替with,以查詢解決此問題。

$Quote = Quote::whereHas('customer', function($Query) use($searchQuery) { 
    $Query->where('e_mail', 'LIKE', '%'.$searchQuery.'%'); 
}); 

Sorted!

0

試試這個。?

$Quote = Quote::with(['Customer' => function($Query) use ($searchQuery) { 
      $Query->where('e_mail', 'LIKE', '%'.$searchQuery.'%'); 
     }])->where('trashed', '0')->where('item', 'LIKE', '%'.$searchQuery.'%'); 
+0

差不多。這隻返回鏈接到具有匹配信息的報價的客戶。我需要「客戶」擁有這些電子郵件的「行情」。 (''Customer'=> function($ Query)use($ searchQuery){ – James

+0

$'Quote = Quote :: with(['Customer'=> function Query($'QueryQuery) '','LIKE','%'。$ searchQuery。'%'); \t \t}]) - > where('trashed',0) - > orderBy('created_at','desc');'但它是不執行'e_mail'部分。 – James