Всем привет.
Помогите найти праильное решение. Мне на сервер приходят данные вот в таком виде. Фото ниже:
Первые два поля я добавлю в нужную мне таблицу.
Вопрос с другими полями (ingredient-id, amount). В БД есть таблица. Фото ниже:
Мне нужно для рецепта добавить все ингредиенты. На сервер пришли id ингредиентов. Нужно как-то прокрутить грамотно этот массив и сделать запрос в БД.
Как можно вернуть id только что добавленного рецепта, чтобы потом к нему добавлять ингредиенты?
Можно ли как-то собрать из пришедшего массива id-ингредиентов и количество и вставить в БД для одного рецепта, но чтобы не в цикле, а одним запросом?
Это классическое отношение между моделями "многие ко многим". в Laravel
это называется many-to-many.
Я так понимаю из скриншота у вас как раз смежная (intermediate) таблица, в которую помещаются id
рецепта и id
ингридиента.
Соответственно,чтобы то, что вы хотите сделать, грамотно заработало у вас должно быть 3 таблицы:
1) recipes
2) ingredients
3) ingredient_recipe
Модель Recipe:
class Recipe extends Model
{
public function ingredients()
{
return $this->belongsToMany('App\Ingredient','ingredient_recipe');
}
}
Модель Ingredient:
class Ingredient extends Model
{
public function recipes()
{
return $this->belongsToMany('App\Recipe','ingredient_recipe');
}
}
Необходимо первоначально создать какой-либо рецепт:
$new_recipe = Recipe::create(["name" => "my_recipe","description" => "very tasty"]);
Это ответ на первый вопрос, где $new_recipe->id
будет id
нового рецепта.
Далее надо собрать массив из id
ингредиентов, например через метод коллекции pluck(), допустим $arr_ingredients = [1,2,3]
и выполнить:
$new_recipe->ingredients()->sync($arr_ingredients);
Это ответ на второй вопрос.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Делаю запрос POST на teamleader API, в котором надо указать имя пользователя и его емаил, но каждый раз пишет это:
Я использую Codeigniter и WorkermanВ примере на сайте разработчика указан пример запуска сервера:
Есть форма с авторизациейКогда вводим логин и пароль которые не содержаться в СУБД, то страница просто обновляется
Возник вопрос следующего характераЕсть кнопка, при нажатии на которую посылается AJAX-запрос на контроллер