Laravel 8 工厂状态
工厂状态可以让你任意组合你的模型工厂,仅需要做出适当差异化的修改,就可以达到让模型拥有多种不同的状态。例如, 你的 User
模型中可以修改某个默认属性值来达到标识一种 suspended
状态。你可以使用 state
方法来进行这种状态转换。您可以根据自己的喜好命名状态方法。 毕竟,这只是一个典型的 PHP 方法:
/**
* 标识用户 「 已暂停 」 状态。
*
* @return \Illuminate\Database\Eloquent\Factories\Factory
*/
public function suspended()
{
return $this->state([
'account_status' => 'suspended',
]);
}
如果状态转换需要访问工厂定义的其他属性,则可以将回调传递给 state
方法。 回调将收到为工厂定义的原始属性数组:
/**
* 标识用户 「 已暂停 」 状态。
*
* @return \Illuminate\Database\Eloquent\Factories\Factory
*/
public function suspended()
{
return $this->state(function (array $attributes) {
return [
'account_status' => 'suspended',
];
});
}