我正在Laravel中进行项目。我想分配一些字段,这些字段的列键和值在多个表中相同。就像我在几乎每个表中都拥有诸如created_by,updated_by,status字段之类的通用字段一样。
我已经创建了这些键值的数组,
$common_data = ['status' => Constants::ACTIVE,'created_by' => 1,'updated_by' => 1];
每次创建模型的新对象时,都必须手动将它们分配给该对象,例如
$intake = new Intake($data);
$intake->name = 'test;
$intake->email = 'test@gmail.com;
$intake->status = Constants::ACTIVE;
$intake->created_by = 1;
$intake->updated_by = 1;
和save()将在其他位置。
因此,有什么方法可以将这些公共字段添加到对象中,而不是拥有它。像某些推操作或其他操作。
答案 0 :(得分:0)
您可以使用回调方法来监听模型事件,例如保存,创建等。发生此类事件时将触发这些功能。看下面的代码
class Intake extends Model {
protected static function boot()
{
parent::boot();
static::creating(function ($intake ) {
$intake->status = Constants::ACTIVE;
$intake->created_by = 1;
$intake->updated_by = 1;
});
}}