您好我有下一个创建记录的代码
Institution::create($request->all());
User::create([
'name' => $request['name'],
'lastname' => $request['lastname'],
'phone' => $request['phone'],
'email' => $request['email'],
'password' => $request['password'],
'state' => 1,
'profile_id' => 1,
'institution_id' => Institution::max('id'),
]);
用户的最后一个属性是否正确实现了? 最后3个用户属性,这样做是正确的吗?还是有更好的
答案 0 :(得分:0)
使用Institution::max('id')
会产生竞争条件。由于create()
的{{1}}静态方法返回新创建的模型,您可以这样做:
Eloquent::Model
如果您的目标是最小化数据库查询的数量并且您拥有相关模型的ID,则创建具有已知父ID的记录通常很好。
另一种方法是使用Eloquent的built-in methods来添加相关模型,但它会触发更多更新查询。例如:
$institution = Institution::create($request->all());
User::create([
'name' => $request['name'],
'lastname' => $request['lastname'],
'phone' => $request['phone'],
'email' => $request['email'],
'password' => $request['password'],
'state_id' => 1,
'profile_id' => 1,
'institution_id' => $institution->id,
]);
但是,在这种情况下,由于尚未加载相关模型,并且您知道它们的ID,因此无需仅提取它们以将它们与用户关联。