Вставить / создать данные, используя принадлежность к отношениям в laravel - PullRequest
0 голосов
/ 01 декабря 2018

Телефон принадлежит пользователю.Теперь, как я вставляю данные телефона и пользователя как через отношение принадлежностей, так и автоматически получаю внешний ключ user_id в таблице телефона.Здесь я пытаюсь этот код, но не работает.

$phoneData = $request->get('phone');
$userData = $request->get('name');
$phone->user()->create($userData);
$phone->create($phoneData);

Вот в поле ввода формы

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

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

$userData  = $request->get('name');
$phoneData = $request->get('phone');

$phone = new Phone();
$phone->user()->associate(User::create($userData));
$phone->save();

Может быть, выищу что-то вроде этого ...

для обновления ..

$phone = isset($phoneData['id']) 
   ? Phone::where('id', $phoneData['id'])->first() : new Phone(); 
$phone->user()->associate(User::firstOrCreate(
  ['email' =>$userData['email']], .... extra data from user));
$phone->save();
0 голосов
/ 01 декабря 2018

Примерно так:

$userData  = $request->get('name');
$phoneData = $request->get('phone');

$user = User::create($userData);
$user->phones()->save(new Phone($phoneData));

Конечно, вам также необходимо определить отношения в модели User:

// \App\User.php
public function phones()
{
    return $this->hasMany(\App\Phone::class);
}
...