laravel 数组回调必须正好有两个元素

i7uq4tfw  于 2023-03-04  发布在  其他
关注(0)|答案(3)|浏览(158)

表格模型

{

        //filters search

        if(isset($filters['search']) ? $filters['search'] : false){

            return $query->where('tittle','like','%' . $filters('search') . '%')

            ->orWhere('body', 'like', '%' .$filters('search') . '%');

        }

    }

和控制器

"posts" => Post::latest()->filter(request(['search']))->get()

和i get数组回调必须正好有两个元素
我只是学习laravel 8请帮助我

6tdlim6h

6tdlim6h1#

只需将其更改为$filters [“搜索”]而不是$filters(“搜索”)

jogvjijk

jogvjijk2#

你需要在if代码块中修改条件检查,你在那里做了额外的工作,你可以使用empty而不是isset这将检查键是否存在,并且它不是null和空的,所以它将如下所示:

if (!empty($filters['search'])) {
        return $query->where('tittle', 'like', '%'.$filters['search'].'%')
            ->orWhere('body', 'like', '%'.$filters['search'].'%');
    }

另外,如果你试图从请求中获取搜索请求,那么你应该只使用request('search)。在filter方法(作用域)中。你确定你需要数组吗?因为你传递的是一个搜索值,request('search)是数组吗?

sigwle7e

sigwle7e3#

$search = data_get($filters, 'search', false);
return $query->when(!empty($search), function ($query) use ($search) {
    $query->where('tittle', 'like', "%$search%")
        ->orWhere('body', 'like', "%$search%");
});

相关问题