Eloquent, создание записи через relation
Есть связь botUser, у которого есть wantedCake (то же, что и заказ), у которого есть photo. В моделях я прописала relations следующим образом:
С созданием заказа проблем не возникает:
$this->user->fillingWantedCake()->create([
'user_id' => $this->user->id,
'description' => $this->update->getMessage()->getText(),
'status' => WantedCakeStatusEnum::NEW
]);
Но мне никак не удается создать фото. Этот способ не работает:
$this->user->fillingWantedCake()->photo()->create([
'file_id' => $this->update->getMessage()->getPhoto()[0]->getFileId()
]);
Как сделать правильно?
Ответы (1 шт):
Автор решения: E_K
→ Ссылка
Когда вы вызываете метод отношений, а не обращаетесь к нему как к свойству, вам возвращается экземпляр класса отношений (в вашем случае HasOne). Этот Builder используется для построения запроса, он ничего не знает о WantedCacke который вы создали.
$this->user->fillingWantedCake() - возвращает экземляр HasOne
$this->user->fillingWantedCake - возвращает экземляр WantedCake
Что бы сохранить фото вам нужно вызвать метод photo на экземпляре класса WantedCacke.
$this->user->fillingWantedCake->photo()->create(
[
'file_id' => $this->update->getMessage()->getPhoto()[0]->getFileId()
]
);


