为什么我不能这样做:
protected $attributes = array('name' => config('app.name'));
我收到以下错误:
编辑:我应该提一下,当我在Eloquent模型中执行此操作时会出现问题。如果我执行以下操作,它可以正常工作:常量表达式包含无效操作
protected $attributes = array('name' => 'my app');
答案 0 :(得分:1)
Eloquent中的attributes属性(如果我没记错)静态(或Eloquent本身是静态的),你只使用常量来填充静态属性(或方法)。
如果向类中添加构造(在其中也调用父构造),则可以更改属性:
public function __construct(array $attributes = [])
{
$this->attributes = array('name' => config('app.name'));
parent::__construct($attributes);
}
但是不要忘记Laravel本身使用的是属性属性,因此您应该使用其他名称或将其添加到数组中而不是设置它!
答案 1 :(得分:0)
请尝试这种方式:(我希望它有所帮助)
在你的模特中:
private $attributes;
在模型中的函数中:
public function anyfunction()
{
$this->attributes = array('name' => config('app.name'));
dd($this->attributes);
}