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.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...