#laravel-4
#laravel-4
Вопрос:
Я пытаюсь связать две записи вместе, но это не работает.
Мой метод для этого (внутри репозитория) выглядит следующим образом:
public function create(array $data)
{
// Create the user
$user = $this->userModel->create([
'username' => $data['username'],
'email' => $data['email'],
'password' => $data['password']
]);
// Create the profile
$profile = $this->profileModel->create([
'location' => $data['profile']['location'],
'bio' => $data['profile']['bio']
]);
$user->profile()->associate($profile);
$user->save();
return true;
}
(полный источник для этого можно найти здесь: https://github.com/LimeBlast/prijs/blob/master/app/Prijs/Repository/User/EloquentUser.php#L44 )
Но я получаю сообщение об ошибке: «Вызов неопределенного метода IlluminateDatabase Query Builder::associate()»
Что я делаю не так? Спасибо.
Комментарии:
1. Это будет связано с отношениями. Если в вашем профиле модели пользователя есть одно отношение, бьюсь об заклад, это ваша проблема.
2. Связь
hasone
( github.com/LimeBlast/prijs/blob/master/app/models/User.php#L40 ) иbelongsto
в ответ ( github.com/LimeBlast/prijs/blob/master/app/models /… ) — что мне нужно сделать, чтобы это исправить?
Ответ №1:
Попробуйте
$profile->user()->associate($user);
$profile->save();
Это было бы моим лучшим предположением. Вам нужно вызвать ассоциацию для объекта, у которого есть метод belongsTo
Комментарии:
1. Спасибо. Я не могу поверить, что у меня все было наоборот.
2. Я просто хотел добавить, что, по-видимому
$user->profile()->save($profile);
,$user->save();
также работает.