紧凑():未定义的变量:运算符

Kar*_*ich 25 php laravel

我收到以下错误

  (1/1) ErrorException
  compact(): Undefined variable: operator
Run Code Online (Sandbox Code Playgroud)

这是我的代码行

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

Run Code Online (Sandbox Code Playgroud)

为什么会这样?是因为我的 PHP 版本 (7.3) 还是其他原因?

小智 38

转到您的项目

vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php
Run Code Online (Sandbox Code Playgroud)

在第 1337 行,您可以在addWhereExistsQuery方法中找到以下代码

$this->wheres[] = compact('type', 'operator', 'query', 'boolean');
Run Code Online (Sandbox Code Playgroud)

您只需删除 'operator' 参数。

我希望它能正常工作。

  • 这是一个 hacky 解决方案,仅当由于某种原因无法更新 Laravel 版本时才应使用。 (3认同)
  • @哈桑努尔·拉赫曼·希梅尔。我也有这个问题,从过去两个小时开始探索。这是我找到的确切解决方案。谢谢你节省了我的时间。就我而言,它是 1229 线。 (2认同)

小智 9

此问题有 2 个修复

  1. 将你的 php 降级到 7.2
  2. 运行“composer update”,因为在最新的 Laravel 中,此问题已得到解决。


eas*_*ong 8

请参考此 https://github.com/laravel/framework/issues/26936

Laravel 的版本需要更新。