页面套件 - 查询搜索问题



我创建了一个名为material的扩展,一切正常。我想实现简单的搜索查询,所以我从扩展bixie/portfolio采样了它,您可以从marketplace获取它。所以我的MaterialController中有这段代码:

$user_id = App::user()->id;
$query  = array_values(Material::query()->where('user_id = ?', [$user_id])->get());
$filter = array_merge(array_fill_keys(['search', 'order', 'limit'], ''), $filter);
extract($filter, EXTR_SKIP);
if ($search) {
$query->where(function ($query) use ($search) {  //<-- this throw error.
$query->orWhere(['name LIKE :search'], ['search' => "%{$search}%"]);
});
}

我会得到致命的错误:

致命错误:调用成员函数,其中((在行数组上...

错误是什么意思?

我用谷歌搜索了一些评论,认为函数在哪里((需要与集合一起使用。在这种情况下,我该如何解决?

我正在使用pagekit 1.0.12symfony ~3.0.0

正确的代码版本是:

$user_id = App::user()->id;
// init query and add filter by `user_id`
// DO NOT use `get` and `array_values`, because 
// these functions __change__ type of `$query`
$query  = Material::query()->where('user_id = ?', [$user_id]);
$filter = array_merge(array_fill_keys(['search', 'order', 'limit'], ''), $filter);
extract($filter, EXTR_SKIP);
if ($search) {
// add additional filtering
$query->where(function ($query) use ($search) {
$query->orWhere(['name LIKE :search'], ['search' => "%{$search}%"]);
});
}
// get/return results of a query
return $query->get();

相关内容

  • 没有找到相关文章

最新更新