Получите последний идентификатор недавно созданной строки базы данных

#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();