2016-12-03 83 views
0

我想找到一種方法來寫出雄辯的方式來查詢我的模型。外鍵查詢laravel - 雄辯的方式

我有一個Form模型每個表單都屬於User(Form:User = 1:1)。每個User都有一個State和一個City與它們相關聯。 Admin評論a Form並且每個管理員可以分配到多個StateCity。我想找到Form屬於Admin

這是admin.php的(模型)的形式功能

public function forms() 
{ 


     //cities 
     $cities = $this->cities->pluck('name'); 
     //states 
     $states = $this->states->pluck('name'); 


     //get all form from the user and states 
     $forms = Form::whereHas('user',function ($query) use($cities,$states) 
     { 
      // find form from his states or cities 
      $query->whereIn('state',$states)->orWhereIn('city',$cities); 

     }); 
     return $forms; 

} 

目前,它返回的所有形式。 任何幫助將不勝感激!

回答

1

你可以試試這個:

$citiesForms =$this->cities->forms->toArray(); 
$statesForms = $this->states->forms->toArray(); 

return array_merge($citiesForms, $statesForms); 

,你可以找hasManyThrough,使在同一行

+0

'$這個 - > cities-> forms'如果非要定義將工作'的形式完成這件事'在'City'模型中的關係,即使我這樣做,我也必須在那裏寫同樣的查詢。這又回到了這個問題! –

+1

你應該讓'hasManyThrough'獲得城市中的表單,這些表單位於該城市的用戶中。請參閱[文檔](https://laravel.com/docs/5.3/eloquent-relationships#has-many-through) –