【问题标题】:Laravel 5.6: ErrorException: compact(): Undefined variable: operatorLaravel 5.6: ErrorException: compact(): Undefined variable: operator
【发布时间】:2021-02-03 06:21:56
【问题描述】:

我正在将我的 laravel5.5 升级到 5.6。在运行测试时,我收到此错误:

ErrorException: compact(): Undefined variable: operator

现在这里有一个解决方案Laravel - compact(): Undefined variable: operator in Builder.php,但我正在遵循这个解决方案,但仍然面临这个错误。早些时候我从5.4升级到5.6,然后在看到上述问题中提到的解决方案后,我从5.4升级到5.5,现在尝试从5.5升级到5.6

这是导致此错误的一小段代码:

$query = TransportOrder::with('orderNumber');

$query->whereHas('orderNumber', function ($q) use ($orderNumber) {
      $q->where('order_number', '=', $orderNumber);
});

return $query->first();

whereHas 导致了这个问题。那么whereHaswith 是否有替代方案,或者我缺少任何其他解决方案?

我的php版本是这样的:

PHP 7.3.23-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Oct  6 2020 11:36:27) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.23, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.23-1+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
    with blackfire v1.24.2~linux-x64-non_zts73, https://blackfire.io, by Blackfire

编辑:

compact() 用于vendorBuilder

public function addWhereExistsQuery(self $query, $boolean = 'and', $not = false)
    {
        $type = $not ? 'NotExists' : 'Exists';

        $this->wheres[] = compact('type', 'operator', 'query', 'boolean');

        $this->addBinding($query->getBindings(), 'where');

        return $this;
    }

【问题讨论】:

  • 我没有在我的代码中使用 compact,它在供应商文件中。 @KamleshPaul 我已经更新了问题。
  • $this->wheres[] = compact('type', 'operator', 'query', 'boolean'); 这行导致错误,它期望有变量
  • 试试$not = false$operator = false可能是你想要的
  • @KamleshPaul 这是供应商文件,我不想更改它。
  • 然后删除那个库。

标签: php laravel upgrade laravel-5.6


【解决方案1】:

事实证明,将 laravel 升级到 6.5.40 可以解决问题,因为上述问题在早期版本中并未得到解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 2017-12-30
    • 2019-11-23
    • 2018-02-22
    • 1970-01-01
    相关资源
    最近更新 更多