2015-08-16 5 views
1

Пользователь hasmany профилей Профиль принадлежит пользователю.laravel 5 вставка между двумя таблицами

следующие работы:

$u = User::firstOrNew(['email' => $s['email']]); 
    $u->name = $s['name']; 
    $u->avatar = $s['avatar']; 
    $u->save(); 

    $p = new UserProfile; 
    $p->provider  = $s['provider']; 
    $p->provider_uid = $s['provider_uid']; 

    if ($u->profiles()->save($p)) { 

    } 

Но я не очень нравится, там лучше более обтекаемый путь? Почему я не могу сохранить 1 атомную вставку?

ответ

2

Вы пытаетесь сохранить данные 2 другой таблицы, поэтому вы не можете сделать это с помощью одной вставки.

Способ, которым вы это делаете - сначала сохраните родительский объект, затем привяжите дочерний объект и сохраните его - как это обычно делается.

Вы также мог бы взглянуть на толчок() метода моделей Eloquent «s, который работает таким же образом, как сохранить(), но и вызывает сохранить() на родственных модели. Используя этот метод позволяет заменить этот код:

$a = new A; 
$a->save(); 

$b = new B; 
$b->a()->associate($a); 
$b->save(); 

с

$a = new A; 

$b = new B; 
$b->a()->associate($a); 

$a->push(); 
Смежные вопросы