Как получить последний идентификатор вставки в Eloquent ORM laravel

Я выполняю операцию с базой данных с "Eloquent ORM in Laravel". Я просто хочу взять последний идентификатор вставки (не максимальный id) в базе данных.

Я искал, чтобы получить последний идентификатор в laravel Eloquent ORM, я получил следующую ссылку (Laravel, получите последний идентификатор вставки, используя Eloquent), который ссылается на получение последней вставки id из следующей функции "$data->save()".

Но мне нужно получить

"Model::create($data)";

Мой запрос:

GeneralSettingModel::create($GeneralData);

User::create($loginuserdata);

Как получить последний вставленный идентификатор?

Ответы

Ответ 1

Как и в документах: Вставить, обновить, удалить

"Вы также можете использовать метод create для сохранения новой модели в одном линия. Введенный экземпляр модели будет возвращен вам из Метод. Однако перед этим вам нужно будет указать либо заполняемый или защищенный атрибут на модели, так как все модели Eloquent защищать от массового присвоения.

После сохранения или создания новой модели, использующей автоинкрементные идентификаторы, вы можете получить идентификатор, обратившись к атрибуту id объекта:"

$insertedId = $user->id;

Итак, в вашем примере:

$user = User::create($loginuserdata);
$insertedId = $user->id;

то на таблице 2 это будет

$input['table2_id'] = $insertedId;
table2::create($input);

Ответ 2

**** Для Laravel ****

$user = new User();

$user->name = 'John';

$user->save();

//Getting Last inserted id

$insertedId = $user->id;

Ответ 3

$lastId = User::create($loginuserdata)->id;

Ответ 4

Вы можете обернуть свои данные в методе insertGetId(), подобном этому

$id = DB::table('table')->insertGetId( $data );

В этом случае данные массива $будут выглядеть примерно так:

$data = [ 'field' => 'data' , 'field' => 'data' ];

и если вы используете фасад DB, вы можете просто добавить метод lastInsertID() к вашему запросу.

$lastInsertedID = DB::table('table')->insert( $data )->lastInsertId();

Ответ 5

Как говорили другие, вы можете получить идентификатор, используя

$model->id;

но только если вы используете стандартное соглашение об именах для красноречивого. Если вы хотите использовать другое имя для столбца primaryKey, например:

class Users extends Model{
    $primaryKey = 'userid';
}

вы можете получить последний вставленный идентификатор, вызвав

$model->userid;

Это описано в: https://laravel.com/docs/master/eloquent#eloquent-model-conventions, где можно найти:

Eloquent также предположит, что каждая таблица имеет столбец первичного ключа именованный идентификатор. Вы можете определить свойство $primaryKey, чтобы переопределить это условность.

Кроме того, Eloquent предполагает, что первичный ключ является приращением целочисленное значение, что означает, что по умолчанию первичный ключ будет автоматически накладывается на int. Если вы хотите использовать неинкрементный или нечисловой первичный ключ, вы должны установить приращение public $incrementing свойство на вашей модели на false.

Ответ 6

Вы можете сделать это как

public function store(Request $request,ModelName $obj)
{
        $lastInsertedId = $obj->create($request->all())->id;

}

Надеюсь, это поможет вам.

Ответ 7

$user = (new user)->create($request->all()) ;

        \Session::flash('message', 'Thanks , Your record No (' .$user->id . ') has been Successfully added');

Это мой способ сделать это, я возвращаю вставленный объект, затем получаю его id или любое другое свойство.

easy.. и complete

Ответ 8

Этот код отлично работает для меня: Laravel 5.3

$upstatus = User::create($status); return response()->json($upstatus);

Пользовательские страницы/сайт я были вызваны data.id

Ответ 9

Элегантная модель

$user = new Reports();        
$user->email= '[email protected]';  
$user->save();
$lastInsertId = $user->id;

Использование Query Builder

 $lastInsertId = DB::table('reports')->insertGetId(['email' => '[email protected]']);

Ответ 10

Это моя попытка:

$model_ins = Model::orderBy('id', 'desc')->take(1)->first();

И используйте $model_ins->id.