微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐