【发布时间】:2018-01-23 17:12:49
【问题描述】:
我在控制器中有这样的代码:
for($i=0; $i<$number_of_tourists; $i++) {
$tourist = Tourist::updateOrCreate(['doc_number' => $request['doc_number'][$i]],
$tourist_to_update);
}
因此,updateOrCreate 方法可以 1) 更新记录,2) 创建新记录 3) 如果 $tourist_to_update 等于数据库中已有的记录,则保持记录不变。
我只想在 'tourist' 表中的记录被更新时才将 $tourist_to_update 保存到 $array[] 中(而不是在创建新记录或没有任何变化时)。
据我所知,Eloquent 事件 https://laravel.com/docs/5.4/eloquent#events 有 updating 和 updated 事件,似乎符合我的需求。
问题是我看了几个教程还是不明白怎么用。
我知道如何在 Tourist 模型中注册 Eloquent 事件:
protected static function boot()
{
parent::boot();
static::updating(function ($model) {
});
}
谁能解释我如何通过 Eloquent 事件实现我的目标?
提前谢谢你。
【问题讨论】:
-
所以你想创建一个新数组
$array只包含更新的记录? -
@TheFallen 是的:) 完全正确!
标签: laravel-events