每次在我的应用程序中创建,更新或删除任何模型时,我都想执行一个函数。
例如,我想将模型名称及其记录数据打印到我的日志中。
我该怎么做?我一直在寻找一些课程来延伸,但没有运气。
答案 0 :(得分:1)
答案 1 :(得分:0)
回答您对Robok的回答的评论,您可以BaseObserver
。
例如,这是我使用的那个:
<?php namespace App\Observers;
use Illuminate\Database\Eloquent\Model as Eloquent;
class BaseObserver {
public function saving(Eloquent $model) {}
public function saved(Eloquent $model) {}
public function updating(Eloquent $model) {}
public function updated(Eloquent $model) {}
public function creating(Eloquent $model) {}
public function created(Eloquent $model) {}
public function deleting(Eloquent $model) {}
public function deleted(Eloquent $model) {}
public function restoring(Eloquent $model) {}
public function restored(Eloquent $model) {}
}
现在任何模型观察者都可以扩展它:
<?php namespace App\Observers;
use App\Observers\BaseObserver;
class ProductObserver extends BaseObserver {
public function creating(Eloquent $model)
{
$model->author_id = Sentry::getUser()->id;
}
public function created(Eloquent $model)
{
if(Input::hasFile('logo')) Image::make(Input::file('logo')->getRealPath())->save(public_path() ."/gfx/product/logo_{$model->id}.png");
}
public function updating(Eloquent $model)
{
$model->author_id = Sentry::getUser()->id;
}
public function updated(Eloquent $model)
{
if(Input::has('payment_types')) $model->paymentTypes()->attach(Input::get('payment_types'));
//Upload logo
$this->created($model);
}
}
如果你想在每个观察者中都有$model->author_id = Sentry::getUser()->id
这样的东西,你当然可以在BaseObserver
中应用它。