[英]compact(): Undefined variable: operator
我收到以下错误
(1/1) ErrorException
compact(): Undefined variable: operator
这是我的代码行
$postsCat = Post::whereHas('Cat', function($query) use ($sreachWord) {
return $query->whereRaw('name REGEXP"'.sql_text_to_regx($sreachWord).'"');
})->orderBy('top','desc')
->orderBy('updated_at','desc')
->paginate(30);
为什么会这样? 是因为我的 PHP 版本(7.3)还是其他原因?
转到您的项目
vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php
在第 1337 行,您可以在addWhereExistsQuery
方法中找到以下代码
$this->wheres[] = compact('type', 'operator', 'query', 'boolean');
您只需删除 'operator' 参数。
我希望它能正常工作。
请参考这个https://github.com/laravel/framework/issues/26936
Laravel 的版本需要更新。
不是将变量传递给compact()
方法,而是将变量的名称作为不带美元符号的字符串传递给它。
$postsCats = Post::all(); // example
return view('posts.index', compact('postsCats'));
此问题有 2 个修复程序
如果您无法升级您的 Laravel,您只需将您的查询更改为 RAW 查询,它对我有用。
$posts = Post::latest()->get();
return view('author.post.index', compact('posts'));
最新的 PHP 版本不允许使用未定义的变量。 另一个选择是在版本之间切换,而不是删除最新版本。 安装较早的版本,如此处概述的PHP7.2<\/strong> 。<\/a> 然后通过在 Ubuntu 终端上运行
sudo update-alternatives --set php \/usr\/bin\/php7.2<\/code>将其设置为首选版本。
然后运行
composer update<\/code>
"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.