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