Метод lastInsertId
Метод lastInsertId класса Connection
возвращает идентификатор последней записи,
вставленной через это соединение. Он полезен
после команды INSERT, когда нужно узнать
сгенерированное значение автоинкрементного поля
(например, первичного ключа).
Метод не принимает обязательных параметров. Первым необязательным параметром можно передать имя последовательности (sequence), что актуально для некоторых СУБД, например PostgreSQL.
Синтаксис
public function lastInsertId(?string $name = null): string|int
Пример
Давайте вставим запись в таблицу и получим её ID:
<?php
namespace AppController;
use DoctrineDBALConnection;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(Connection $connection): Response
{
$connection->executeStatement(
"INSERT INTO article (title, text) VALUES ('abcde', 'article text')"
);
$id = $connection->lastInsertId();
return new Response((string) $id);
}
}
?>
Результат выполнения кода:
1
Пример
Давайте вставим несколько записей и получим ID последней:
<?php
namespace AppController;
use DoctrineDBALConnection;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(Connection $connection): Response
{
$connection->executeStatement(
"INSERT INTO article (title, text) VALUES ('abcde', 'first')"
);
$connection->executeStatement(
"INSERT INTO article (title, text) VALUES ('user', 'second')"
);
$res = $connection->lastInsertId();
return new Response((string) $res);
}
}
?>
Результат выполнения кода:
2
Пример
Давайте получим ID вставленной записи и используем его для выборки:
<?php
namespace AppController;
use DoctrineDBALConnection;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(Connection $connection): Response
{
$connection->executeStatement(
"INSERT INTO article (title, text) VALUES ('hello', 'abcde')"
);
$id = $connection->lastInsertId();
$article = $connection->fetchAssociative(
'SELECT * FROM article WHERE id = ?',
[$id]
);
return new Response($article['title']);
}
}
?>
Результат выполнения кода:
hello
Смотрите также
-
класс
Connection,
который управляет соединением с базой данных -
метод
executeStatement,
который выполняет INSERT, UPDATE и DELETE запросы -
метод
insert,
который вставляет запись в таблицу -
метод
fetchAssociative,
который возвращает одну строку как ассоциативный массив