gpt4 book ai didi

php - LARAVEL 如何从特征中更改模型中的 $fillable?

转载 作者:可可西里 更新时间:2023-11-01 13:39:54 25 4
gpt4 key购买 nike

我有模型:

use seoTrait;

protected $fillable = [
'name', 'title', 'description'
];

我在 $fillable 中创建了特征“seoTrait”,它需要“seoMeta”。

现在我添加:

protected $fillable = [
'name', 'title', 'description', 'seoMeta'
];

但是否有可能在特征“seoTrait”中向 $fillable 添加一些内容?

最佳答案

对于任何来这里寻找答案的人;我相信有比构造函数重载更好的方法。

其他人指出 Laravel 支持可引导模型特征,使用 boot<TraitName>您可以设置使用特征的方法。然而,boot<TraitName>方法必须是静态的,因此您不能更改模型的任何非静态属性。

但是,我发现有一个非静态等效于 boot<TraitName>方法; initialize<TraitName>方法。

在内部,当 Eloquent 启动模型时,它还会根据模型使用的特征中找到的方法为模型注册所有初始化方法。然后在实例化该模型时,会触发初始化方法。

使用示例,基于此问题中所述的问题:

trait SEOTrait
{
/**
* This method is called upon instantiation of the Eloquent Model.
* It adds the "seoMeta" field to the "$fillable" array of the model.
*
* @return void
*/
public function initializeSEOTrait()
{
$this->fillable[] = 'seoMeta';
}
}

遗憾的是,官方文档中没有任何关于可启动或可初始化特征的信息。但是,我仍然觉得这两种功能都存在真的很酷。

关于php - LARAVEL 如何从特征中更改模型中的 $fillable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35622923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com