Я создаю API на Laravel 4 (управление информацией о продукте).
Получил продукты с переводами с красноречивыми отношениями между ними. Продукт имеет много переводов.
Когда я звоню в магазин по API, я сохраняю новый продукт, но также и новый перевод (продукт без перевода по умолчанию бесполезен)
Чтобы достичь этого двумя способами:
$product = new Product(Input::all()))->save();
$product->translations()->save(Input::all());
Прекрасно работает, получил новый продукт с переводом по умолчанию.
Еще один способ думать об этом:
$product = new Product(Input::all()))->save();
$request = Request::create(
'/product/'.$product->id ./translations, 'POST',Input::all());
Второй вопрос:
Если перевод не удалось сохранить, продукт сохраняется в БД (первый запрос на сохранение), возможно ли этого избежать, хранить только продукт, если перевод в БД в порядке?
Какой из них лучший?
Вы должны изучить использование транзакций в Документация Laravel.
Кроме того, вы используете Input::all()
вслепую, что не очень хорошая идея. Вы должны указать только те данные, которые вам нужны, используя Input::only(['one', 'two', 'three'])
Других решений пока нет …