Executar um comando

May 16, 2024 · View on GitHub

Todos os métodos introduzidos em criar um comando e buscar dados lidam com consultas SELECT que buscam dados de bancos de dados.

Para consultas que não retornam nenhum dado, você deve chamar o método Yiisoft\Db\Command\CommandInterface::execute():

  • Se a consulta for bem-sucedida, Yiisoft\Db\Command\CommandInterface::execute() retornará o número de linhas afetadas pela execução do comando.
  • Se nenhuma linha foi afetada pela execução do comando retornará 0.
  • Se a consulta falhar, ela lançará um Yiisoft\Db\Exception\Exception.

Digamos que haja uma tabela de clientes, com uma linha com id 1 presente e uma linha com id 1000 ausente. E consultas não SELECT estão sendo executadas para ambos.

Então, no código a seguir, a contagem de linhas afetadas será 1, porque a linha foi encontrada e atualizada com sucesso:

use Yiisoft\Db\Connection\ConnectionInterface;

/** @var ConnectionInterface $db */

$command = $db->createCommand("UPDATE {{%customer}} SET [[name]] = 'John Doe' WHERE [[id]] = 1");
$rowCount = $command->execute(); // 1

Esta consulta, entretanto, não afeta nenhuma linha, porque nenhuma linha foi encontrada pela condição fornecida na cláusula WHERE:

use Yiisoft\Db\Connection\ConnectionInterface;

/** @var ConnectionInterface $db */

$command = $db->createCommand("UPDATE {{%customer}} SET [[name]] = 'John Doe' WHERE [[id]] = 1000");
$rowCount = $command->execute(); // 0

No caso de SQL inválido, a exceção correspondente será lançada.

use Yiisoft\Db\Connection\ConnectionInterface;

/** @var ConnectionInterface $db */

$db->createCommand('bad SQL')->execute();