我有许多表/模型设置有'locked_at'和'locked_by'列,实质上我想做的是调用类似的东西:
$model->lock();
此方法将检查该行是否尚未锁定,设置两个单元格然后保存模型。
我可以在每个模型中创建锁定方法,但这似乎不是最好的主意。我宁愿创建一次方法,并让所有模型都可以访问它。
有没有办法在laravel中这样做?
答案 0 :(得分:2)
就像ceejayoz建议的那样,你可以通过使用Trait来实现它。
第1步
创建一个名为Traits的文件夹,在其中创建特征类,如下所示
<?php
namespace App\Traits;
trait Lockable {
public function lock() {
$this->lock = 1;
$this->save();
}
}
第2步:
现在在模型类中导入特征,如下所示
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Traits\Lockable;
class User extends Authenticatable
{
use Lockable;
}
多数民众赞成!现在你可以像
那样调用函数$user = \App\User::find(1);
$user->lock();
答案 1 :(得分:0)
您可以创建扩展BaseModel
的{{1}}类,并使用Model
方法扩展lock()
类而不是BaseModel
制作所有模型。然后,只需在Model
类中定义lock()
方法。