Laravel -将变量从控制器传递到模型或从模型访问控制器中的变量

j2cgzkjk  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(135)

我想把控制器中的变量传递给laravel中的模型。
在控制器中,

$withoutUser = True;

$post->update([
    'status' => 'inactive'
]);

在模型中,

protected static function boot(): void
{
   parent::boot();
   static::updated(fn (Model $model) =>
        // Need to access the $withoutUser variable from here?
   );
}

调用$post-〉update()时是否有方法传递$withoutUser变量,或者在模型中调用static::updated方法时是否可以访问控制器中的$withoutUser变量?
谢谢

n3h0vuf2

n3h0vuf21#

你可以通过在post模型上创建一个属性来实现这一点。post类的完全相同的示例被发送到事件调度器。所以你可以像这样写你的代码:

class Post extends Model
{
    public bool $updateWithoutUser = false;
    ...
}

然后在控制器中:

$post->updateWithoutUser = true;
$post->update([
    'status' => 'inactive',
]);

在 Boot 功能中:

protected static function boot(): void
{
    parent::boot();
    static::updated(function (Post $post) {
        if ($post->updateWithoutUser) {
            ...
        }
    });
}

不过,如果要将侦听器排队,则应该小心,因为在这种情况下,当从队列运行侦听器时,该属性将不会保留,因为它会从数据库获取post。

相关问题