// 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的新手,我不确定上面的代码是否可行。 如果您能帮助我,将不胜感激。
谢谢。
答案 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
}