В настоящее время я использую приведенный ниже код для вставки данных в таблицу:
<?php
public function saveDetailsCompany()
{
$post = Input::All();
$data = new Company;
$data->nombre = $post['name'];
$data->direccion = $post['address'];
$data->telefono = $post['phone'];
$data->email = $post['email'];
$data->giro = $post['type'];
$data->fecha_registro = date("Y-m-d H:i:s");
$data->fecha_modificacion = date("Y-m-d H:i:s");
if ($data->save()) {
return Response::json(array('success' => true), 200);
}
}
Я хочу вернуть последний введенный идентификатор, но не знаю, как его получить.
С уважением!
0
. В моем случае идентификатором была строка (UUID), и чтобы это работало, мне пришлось добавитьpublic $incrementing = false;
в мою модель.aid
и я установил,$incrementing = false;
но он тоже не возвращается!xdazz прав в этом случае, но в интересах будущих посетителей, которые могут использовать
DB::statement
илиDB::insert
, есть другой способ:источник
$id = DB::table('someTable')->insertGetId( ['field' => Input['data']);
timestamps
с помощьюinsertGetId
, пожалуйста, проверьте здесьinsertGetId
работает только в том случае, если столбцы идентификаторов на самом деле называется «идентификатор».Для тех, кому также нравится, как Джеффри Уэй использует
Model::create()
в своих учебных пособиях по Laracasts 5, где он просто отправляет запрос прямо в базу данных без явного задания каждого поля в контроллере и использования модели$fillable
для массового назначения (очень важно, для любого новичка и использующего таким образом): я читал много людей, использующих,insertGetId()
но, к сожалению, это не относится$fillable
к белому списку, так что вы получите ошибки при попытке вставить _token и все, что не является полем в базе данных, в конечном итоге настройте то, что вы хотите фильтр и т. д. Это меня обескуражило, потому что я хочу использовать массовое назначение и вообще писать меньше кода, когда это возможно. К счастью,create
метод Eloquent просто оборачивает метод save (то, что упоминалось выше в @xdazz), так что вы все равно можете получить последний созданный идентификатор ...источник
$new = Company::create($input);
return redirect('company/'.$new->id);
Если таблица имеет автоматически увеличивающийся идентификатор, используйте метод insertGetId, чтобы вставить запись, а затем получить идентификатор:
См. Https://laravel.com/docs/5.1/queries#inserts.
источник
**** Для Ларавела ****
Сначала создайте объект, затем установите значение атрибутов для этого объекта, затем сохраните запись объекта, а затем получите последний вставленный идентификатор. Такие как
// Теперь получаем последний вставленный идентификатор
источник
В 5 уровне: вы можете сделать это:
источник
Вот пример:
источник
Это сработало для меня в Laravel 4.2
источник
Вот как мы можем получить последний вставленный идентификатор в Laravel 4
источник
Используйте
insertGetId
для вставки и вставкиid
одновременноИз документа
По
Model
По
DB
Для получения более подробной информации: https://laravel.com/docs/5.5/queries#inserts
источник
После сохранения модели инициализированный экземпляр имеет идентификатор:
источник
Для вставки ()
Пример:
источник
В Laravel 5.2 я бы сделал его максимально чистым:
источник
После
$data->id
даст вам вставленный идентификатор,Примечание. Если ваш столбец автоинкремента имеет имя sno, вам следует использовать,
$data->sno
а не$data->id
источник
После сохранения записи в базе данных, вы можете получить доступ к идентификатору по
$data->id
источник
Для Laravel: если вы вставляете новую запись и вызываете
$data->save()
эту функцию, она выполняет запрос INSERT и возвращает значение первичного ключа (т.е. id по умолчанию).Вы можете использовать следующий код:
источник
источник
Ты можешь сделать это:
источник
Для получения последнего вставленного идентификатора в базе данных вы можете использовать
здесь $ lastInsertedId выдаст вам последний вставленный идентификатор автоинкремента.
источник
Кратчайший путь - это вызов
refresh()
модели:источник
Хотя этот вопрос немного устарел. Мое быстрое и грязное решение будет выглядеть так:
Но я думаю, что это уязвимо к гоночным условиям на часто посещаемых базах данных.
источник
Вы также можете попробовать вот так:
источник
Использование Eloquent Model
Использование Query Builder
источник
После сохранения
$data->save()
. все данные помещаются внутрь$data
. Так как это объект, и текущая строка была недавно сохранена внутри$data
. так что последнийinsertId
будет найден внутри$data->id
.Код ответа будет:
источник
Необязательный метод будет:
Исходник из версии Laravel 5.8
источник
Вы можете получить последний вставленный идентификатор с тем же объектом, который вы вызываете методом сохранения;
Так что вы можете просто написать:
источник
Вы можете легко получить последний вставленный идентификатор записи
Это удивительный трюк, чтобы получить идентификатор из последней вставленной записи в БД.
источник
$user->id
достаточно после создания, чтобы получить вставленный идентификатор.источник
Использование Eloquent Model
Использование Query Builder
Дополнительные методы получения идентификатора последней вставленной строки в Laravel: http://phpnotebook.com/95-laravel/127-3-methods-to-get-last-inserted-row-id-in-laravel
источник
Вы можете использовать
$this
переменную конструктора для получения «последнего вставленного идентификатора с использованием Laravel Eloquent» (без добавления дополнительного столбца) в текущей функции или контроллере.источник