#php #sql #database #laravel #eloquent
Вопрос:
Я пытаюсь извлечь последний вставленный идентификатор из таблицы базы данных, чтобы я мог ввести его в новую таблицу базы данных, вот так:
$mealplaninput =
MealPlanInput::create([
'meal_type' => $meal,
'suitable_for' => $suited,
'allergens' => $allerg,
'specific_allergen' => $spec,
'no_of_people' => $nop,
'start_date' => $request->date,
'no_of_days' => $nod,
'user_id' => $currentuserid,
]);
Попытка вытащить последний идентификатор (но не работает):
$uniquemealplanid = $mealplaninput->id();
Для последующего ввода в новую таблицу:
MealPlanDisplay::create([
'MealPlan_ID' => $uniquemealplanid,
'Day' => $recipeday,
]);
Однако я получаю ошибку:
Вызов неопределенного метода AppModelsMealPlanInput::id()
Я пробовал и другие методы, такие как:
$uniquemealplanid = $this->create($mealplaninput)->id;
Но ошибка, которую я получаю, такова:
Метод AppHttpКонтроллерыMealPlanInputController::создать не существует.
Как я могу извлечь последний идентификатор из MealPlanInput?
Комментарии:
1. Разве это не
id
собственность а? Попробуй просто$mealplaninput->id
вместо$mealplaninput->id()
этого .2. Я попробовал, и не знаю, почему, но, к сожалению, он просто возвращает значение null.
3. Сделайте а
dd($mealplaninput);
и проверьте, что в нем на самом деле содержится. Насколько я знаю, он должен вернуть новую модель с заполненным идентификатором. Это первичный ключ вашей таблицыid
, или вы назвали его как-то по-другому?
Ответ №1:
Вам нужно создать объект из модели, чтобы получить идентификатор.
$mealplaninput = new MealPlanInput;
$mealplaninput->meal_type = $meal;
$mealplaninput->suitable_for = $suited;
$mealplaninput->allergens = $allerg;
$mealplaninput->specific_allergen = $spec;
$mealplaninput->no_of_people = $nop;
$mealplaninput->start_date = $request->date;
$mealplaninput->no_of_days = $nod;
$mealplaninput->user_id = $currentuserid;
$mealplaninput->save();
$uniquemealplanid = $mealplaninput->id;
Комментарии:
1. При публикации ответа, пожалуйста, добавьте также объяснение, например, почему они должны делать это так, а не в их текущей попытке (почему это не сработало и так далее).
2. Согласно руководству ,
::create()
метод должен возвращать только что созданную модель: «В качестве альтернативы вы можете использовать метод create для «сохранения» новой модели с помощью одного оператора PHP. Вставленный экземпляр модели будет возвращен вам методом create» .
Ответ №2:
тебе нужно попробовать
$uniquemealplanid = $mealplaninput->id;
вместо
$uniquemealplanid = $mealplaninput->id();