2017-11-19 7 views
0

変数$typeidを関数カテゴリに送信してクエリに使用する方法があります。そのようなコントローラでクラスの新しいインスタンスを使用しようとするとわかります:laravelのコントローラからモデル関数に変数を送信する方法

$cat= new Main_category(); 
$categories = $cat->categories()->get(); 

それは空の配列を返し、私は手動で私はコントローラ

コントローラから送信された変数としてそれをしたいモデル関数内型IDを追加すると、次のコードがうまく機能している

$categories = Main_category::with('categories')->get(); 

モデル

public function categories()//($typeid) 
{ 

    $query = $this->hasMany(Category::class, 'main_cat_id') 
       ->join('category_type','category_type.cat_id','=', 'categories.cat_id')             
       ->join('main_categories','main_categories.main_cat_id','=', 'categories.main_cat_id')               
       ->where('category_type.type_id', '1'); // I want to use $typeid here 


    return $query; 

}   

答えて

0

私はあなたがwithメソッドを使用したりしないことによって雄弁な関係の方法であなたの変数を渡すことができるかどうかわかりません。しかし、コントローラにwhere句を追加することはできます。

Main_category::with(['categories' => function($query) use($typeid) { 
    $query->where('category_type.type_id', $typeid); 
}])->get(); 

また、モデルのクエリスコープを作成することもできます。

public function scopeWithCategories($query, $typeid) { 
    return $query->with(['categories' => function($query) use($typeid) { 
     $query->where('category_type.type_id', $typeid); 
    }]); 
} 

モデル

、最終的にはコントローラで

Main_category::withCategories($typeid)->get(); 
関連する問題