在生产中抛出异常,但在开发中没有抛出(pluck() on null)

Exception thrown in production, but not development (pluck() on null)

我遇到了一个让我摸不着头脑的奇怪错误。

我正在使用一个将元信息存储在元 table 中的包。所以我的模型有元关系。该包使用这种简单的方法来检索元数据。

public function getAllMeta()
{
    return collect($this->meta->pluck('value', 'key'));
}

所以,如果元数据存在,您会期望它是一个集合,是一个空集合,对吧?这就是它在我的本地开发服务器上显示的内容。据我了解,当尝试从关系中检索数据时,如果没有相关记录,它将 return null。

但是,在生产中,如果没有元关系(没有数据),它 return 就是这个异常:Call to a member function pluck() on null

我不明白为什么会这样。

那么,我错过了什么?同样的代码return在dev中是一个空集合,在prod中抛出异常?

看起来 meta 在那个方法后面应该有括号。 (metaMetable 特征中的方法,而不是字段。)

并没有真正解释为什么您会在两种环境中看到差异,但它可能有助于解决眼前的问题。