无法在 Laravel 范围内获取我的 $params

Impossible to get my $params in Laravel scope

我是 Laravel 的新手,我尝试列出一个 table。在此列表中,我有一些过滤器。 我尝试使用范围,但它不起作用。

在我的控制器中我有

class GrillesController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(request $request)
    {


     $query = DB::table('grilles')
        ->join('compets as CO','CO.id','=','gri_compet_id')
        ->join ('journees as JO', 'JO.id','=','gri_journee_id')
        ->select('com_nm_logo','jou_l_journee_c','grilles.*')
        ->where('com_c_st','A')
        ->orderbyRaw('gri_d_deb,gri_h_deb,com_n_ord_aff');

    $params = $request->except('_token');
    $grilles = Grilles::FilterListe($query,$params)->get();

在我的模型中:

public function scopeFilterListe($query,$params)
{
    $value = $params['filter_compets'];


    $query->where('gri_compet_id','=',$value);
    return $query;
}

在模型的 scopeFilterListe 中,我想获取 URL 的所有变量来构建我的 where 子句。

http://xxx.fr/grilles?_token=DMcay7SkDc1QeFlxRPMqT4DTGJXdgcXRbVbCNRvo&filter_compets=1&filter_etatparis=3&filter_periode=

我试了很多东西,但总是出现这个错误:

"Cannot use object of type Illuminate\Database\Query\Builder as array"

它来自:$value = $params['filter_compets']; 如果我写 $value=1,它会工作......(即使我有另一个问题,因为数据应该来自

->join('compets as CO','CO.id','=','gri_compet_id')
->join ('journees as JO', 'JO.id','=','gri_journee_id')

不显示..

我的示波器有什么问题?

非常感谢您的帮助。

我认为您需要动态范围。请查找文档 here.

附上您修改后的脚本。

public function scopeOfFilterListe($query,$value)
{
    $query->where('gri_compet_id','=',$value);
    return $query;
}
$query = DB::table('grilles')
        ->join('compets as CO','CO.id','=','gri_compet_id')
        ->join ('journees as JO', 'JO.id','=','gri_journee_id')
        ->select('com_nm_logo','jou_l_journee_c','grilles.*')
        ->where('com_c_st','A')
        ->orderbyRaw('gri_d_deb,gri_h_deb,com_n_ord_aff')
   ;

$params = $request->except('_token');
$grilles = Grilles::ofFilterListe($params['filter_compets'])->get();