如何在laravel雄辩地使用__construct
并获取属性。我很累:
public function __construct() {
parent::__construct();
dd($this->attributes);
}
我的代码返回null。但是在抽象类Model
上填充了所有属性:
public function __construct(array $attributes = [])
{
$this->bootIfNotBooted();
$this->initializeTraits();
$this->syncOriginal();
$this->fill($attributes);
}
是否可以在构造方法中访问模型属性?
答案 0 :(得分:0)
尝试使用accessors
。
https://laravel.com/docs/5.8/eloquent-mutators#accessors-and-mutators
将其定义为:
public function getFirstNameAttribute($value)
{
return ucfirst($value);
}
并使用$this->first_name
这样的东西。
答案 1 :(得分:0)
我通过像这样更新构造函数在本地进行了测试:
public function __construct(array $attributes = []) {
parent::__construct($attributes);
dd($this->getAttributes());
}
但是,我发现从数据库中获取对象时,其属性未填充在构造函数中,因此无法在其中访问它们。
您可以做的是在初始化对象之后访问属性:
$post = Post::find(1);
dump($post->getAttributes());
不确定是否有帮助,但这就是事实。
也许事件或观察员可以为您提供所需的帮助:
https://laravel.com/docs/5.8/eloquent#events
https://laravel.com/docs/5.8/eloquent#observers