2016-04-28 4 views
0

Я пытаюсь вставить образец пользователя в мою базу данных.Как вставить несколько присоединенных моделей в Laravel 5

В моей базе данных есть 3 модели, все они должны быть заполнены в одно и то же время. Моделями являются: пользователи, профили и команды.

  • У каждого пользователя есть один профиль (отношения один к одному).
  • Каждый пользователь может быть частью многих команд, и каждая команда может иметь много пользователей (многие из многих отношений ).

Мои модели настроены правильно с соответствующими belongsTo()/hasMany() ссылок и т.д.

В Laravel, мой код выглядит следующим образом:

$user =  new User([ 'email' => '[email protected]', '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 при вставке в таблицу профилей.

EDIT: Спасибо, в ответ от Росс Уилсон, я пошел с:

$user =  new User([ 'email' => '[email protected]', '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]); 
+0

Вы хотите создать команду для каждой вставки пользователя или просто взять команду и прикрепить пользователя к этой команде? – zorx

+0

@zorx В этом случае на самом деле создается новая команда – Ash

ответ

1

С вашего примера вы никогда не сохраняются в User модели.

Добавить $user->save(); прежде, чем сохранить профиль.

Вы также должны сохраняться $team перед присоединением его к User

Надеются, что это помогает!

Смежные вопросы