Ami*_*ier 5 php observable laravel
我必须批量保存数据。数据正在保存,但观察者不工作。我尝试了观察者的所有方法(创建、创建、保存、保存)但没有响应。
foreach( $departments as $department) {
$data[] = [
'department_id' => $department,
'name' => $name,
'description' => $description,
];
}
if(count($data) > 0) {
JobDescription::insert($data);
}
namespace App\Observers;
use Auth;
class JobDescriptionObserver
{
public function created($model)
{
echo 'created';
die;
}
}
Run Code Online (Sandbox Code Playgroud)
此行为是预期的,并记录在鲜红色警告中:
当通过 Eloquent 发布批量更新时, 不会为更新的模型触发
saved和updated模型事件。这是因为在发布批量更新时实际上从未检索到模型。
如果您需要在创建模型时调度事件,那么您必须一一保存它们:
foreach($departments as $department) {
Jobdescription::create([
'department_id' => $department,
'name' => $name,
'description' => $description,
]);
}
Run Code Online (Sandbox Code Playgroud)
批量插入和更新行为不同的原因是因为批量插入/更新的基础 SQL 查询与更新单行的查询不同。批量更新不允许 Eloquent 从查询结果中检索 ID 列表,这意味着它不知道更新了哪些模型,因此无法为每个模型分派事件。另一方面,单行更新允许 EloquentlastInsertId从查询结果中获取。
| 归档时间: |
|
| 查看次数: |
2130 次 |
| 最近记录: |