如何在Laravel 5中插入多个连接的模型

时间:2016-04-28 14:48:46

标签: php database laravel eloquent

我正在尝试将示例用户插入我的数据库。

我的数据库包含3个模型,这些模型应该同时填充。模型包括:用户,个人资料和团队。

  • 每个用户都有一个个人资料(一对一的关系)。
  • 每个用户都可以 成为许多团队的一员,每个团队可以拥有许多用户(多对多) 关系)。

我的模型已使用相关的belongsTo() / hasMany()引用等正确设置。

在laravel中,我的代码如下所示:

$user =     new User([ 'email' => 'sample@sample.com', 'password' => bcrypt('password1'), 'username'=> 'sampleuser']);
$profile =  new Profile(['name' => 'Sample','bio'  => 'All about me']);
$team =     new Team(['name' => 'SuperAdmins']);

$user->profile()->save($profile);
$user->teams()->attach($team, ['type' => 4]);

我怎样才能让它工作>?这不起作用,我的控制台在插入配置文件表时引用'user_id' cannot be null

修改 谢谢,罗斯威尔逊的回答,我去了:

    $user =     new User([ 'email' => 'sample@sample.com', 'password' => bcrypt('password1'), 'username'=> 'sampleuser']);
    $user->save();

    $profile =  new Profile(['name' => 'Sample','bio'  => 'All about me']);
    $user->profile()->save($profile);

    $team =     new Team(['name' => 'SuperAdmins']);
    $user->teams()->save($team, ['type' => 4]);

1 个答案:

答案 0 :(得分:1)

通过您的示例,您实际上永远不会保留User模型。

在保存个人资料关系之前添加$user->save();

在将$team附加到User

之前,您还需要保留body{ margin: 0 auto; } #wrapper{ margin: 0 auto; height: 100%; width: 100%; right: 0px; left: 0px; top: 0px; bottom: 0px; position: relative; background-color: black; } #div1{ margin: 0 auto; height: 120px; width: 100%; right: 0px; left: 0px; top: 0px; position: fixed; background-color: #222222; text-align: center; color: white; z-index: 2; } #div2{ margin: 0 auto; height: 300px; width: 100%; top: 120px; right: 0px; left: 0px; position: absolute; background-color: #990000; text-align: center; color: white; } #div3{ margin: 0 auto; width: 100%; top: 420px; bottom: 0px; right: 0px; left: 0px; position: absolute; background-color: #999955; height: 100%; min-height: 100%; }

希望这有帮助!