如何将变量从控制器发送到laravel中的模型函数

时间:2017-11-19 11:21:13

标签: laravel

我想将变量$typeid发送到函数类别以在查询中使用它是否有办法知道当我尝试在我的控制器中使用类的新实例时:

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

它返回空数组

当我在模型函数中手动添加typeid时,以下代码运行良好我希望将它作为从控制器发送的变量

控制器:

$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;

}          

1 个答案:

答案 0 :(得分: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);
    }]);
}

最后在Controller

Main_category::withCategories($typeid)->get();