编程语言
首页 > 编程语言> > php – 检索Laravel中的可填写字段

php – 检索Laravel中的可填写字段

作者:互联网

在laravel 5.4中,我能够通过使用模型实例的可填充索引来检索可填写字段.

$model = new AnyClass();
dd($model['fillable']);

上面的代码打印了AnyClass的所有可填写字段.但是相同的代码在laravel 5.6上打印为null.我知道我可以使用$model-> getFillable()检索可填写字段.我的问题是什么原因/为什么它不在laravel 5.6中工作但在5.4中工作?

解决方法:

如果你看一下Laravel的源代码,你会看到差异.

Model类由应用程序模型扩展,实现了ArrayAccess接口,该接口强制类定义offsetGet方法.

在Laravel 5.4中,offsetGet方法如下所示:

public function offsetGet($offset)
{
    return $this->$offset;
}

这意味着如果你调用$model [‘fillable’],你实际上调用$model-> offsetGet(‘fillable’),它实际上返回了类的可填充属性.

我找不到Laravel 5.6标签,但我很确定它与Laravel 5.5.45的代码相同.在此版本中,offsetGet方法已更改为:

public function offsetGet($offset)
{
    return $this->getAttribute($offset);
}

这意味着它实际上返回了找到的属性,否则返回null.

标签:php,laravel,laravel-5,eloquent,laravel-5-6
来源: https://codeday.me/bug/20190527/1161368.html