使用Relation Laravel 5.1创建记录

时间:2015-07-08 23:36:54

标签: php laravel-5.1 laravel-orm

您好我有下一个创建记录的代码

    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个用户属性,这样做是正确的吗?还是有更好的

1 个答案:

答案 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,因此无需仅提取它们以将它们与用户关联。