如何在laravel中调用模型函数和雄辩函数

时间:2019-01-28 06:43:57

标签: php laravel eloquent

// controller.php

public function close(int $boxId): bool
{
    $box = Box::find($boxId)->close();
}

// model.php

public static function close()
{
    //need to update the is_open field to 0 for found Box
}

我是laravel的新手,我不确定上面的代码是否可行。 如果您能帮助我,将不胜感激。

谢谢。

2 个答案:

答案 0 :(得分:1)

您不需要它是静态的。以下应使其起作用:

public function close()
{ 
    return $this->update([
        'is_open' => 0
    ]);
}

,您可以在Controller中执行此操作:

public function close(int $boxId): bool
{
    $box = Box::findOrFail($boxId);

    return $box->update([
        'is_open' => 0
    ]);
}
如果找不到该框,

findOrFail()将抛出一个ModelNotFoundException

答案 1 :(得分:0)

您可以通过laravel雄辩的local scope

  

本地范围允许您定义常见的约束集   可以轻松地在整个应用程序中重复使用。例如,您可能   需要经常检索所有被认为“受欢迎”的用户。   要定义范围,请在Eloquent模型方法的范围前添加前缀

model.php

public  function scopeClose($query,$flag)
{
    $query->where('is_open',$flag ?? 0);
    //need to update the is_open field to 0 for found Box
}