У меня есть отношение морфинга между страницами сообщений и таблицей тегов.
Posts
id
othercolumn
Pages
id
othercolumn
tags
id
othercolumn
tagable_id
tagable_type
Пример: я хочу добавить сообщение в таблицу сообщений и тег в таблицу тегов одновременно
DB::transaction(function(){
$post = new Post;
$post->othercolumn = Input::get('something');
$tags = new Tag;
$tag->othercolumn = Input::get('something');
// here function to store post and tag
if ( //post or tag not created )
{
throw new \Exception('Failed to create post or tag');
}
});
если я использую отношение преобразования функции сохранения, например $post->tagable()->save($tag). покажет ошибку tagable_id не может быть нулевым.
так как я могу получить идентификатор сообщения? если попытаться получить идентификатор сообщения, используя $post- > id, но вернуть null... потому что с помощью транзакции БД... все еще можно сделать этот метод?
создать пост в первом, во втором создать тег
если сначала создать сообщение, а затем теги.... как я могу удалить сообщение, если тег не создан... например, транзакция БД... будет откатываться сообщение
если (!$tags->save()) {$post->delete();}
хорошо, теперь это работа, спасибо за ваше время ...
@J.Doe, ты должен написать ответ, и ОП должен его принять.






Вы не можете сохранять модели одновременно, но вы можете удалить первую модель, если вторая не сохранена:
DB::transaction(function(){
$post = new Post;
$post->othercolumn = Input::get('something');
$tag = new Tag;
$tag->othercolumn = Input::get('something');
if (!$post->save() || !$tag->save())
{
throw new \Exception('Failed to create post or tag');
}
});
вы не можете этого сделать, потому что вам нужен идентификатор сообщения