在Laravel模型上设置动态属性

时间:2019-01-18 12:03:05

标签: laravel laravel-5

我要做的是先创建模型上的属性(活动),然后创建它。

我想避免使用活动用户的此硬编码代码:

$user["firstname"] = "John";
$user["lastname"] = "Doe";
$user["active"] = 1;
UserModel::create($user);

我想要类似的东西

$user["firstname"] = "John";
$user["lastname"] = "Doe";
UserModel::active()->create($user);

在幕后,我想使用active()方法将“活动”列/属性设置为1。 我该怎么办?

1 个答案:

答案 0 :(得分:0)

模型的make函数可在内存中创建模型,并且可以将其保存到数据库中

所以您可以做的是:

$newUser["firstname"] = "John";
$newUser["lastname"] = "Doe";
UserModel::make($newUser)->activate()->save();

您的active函数如下所示:

public function activate()
{
    $this->active = 1;
    return $this;
}

通过这种方式,可以在内存中创建用户,然后将其设置为活动状态,然后存储在数据库中。

如果要在保存之前对用户做更多事情,可以这样:

$newUser["firstname"] = "John";
$newUser["lastname"] = "Doe";
$activeUser = UserModel::make($newUser)->activate();
//do stuff with $activeUser;
$activeUser->save();