Как отследить, что вставка не удалась при batchInsert?

При использовании ActiveRecord, метод save возвращает результат успешности произведённой операции. Если я хочу вставить много записей, я хочу использовать batchInsert.

Но как отследить, вставились ли именно все записи? И что, если хоть одна не вставилась - то откатить транзацкцию? Потому что всё, что возвращает метод - количество затронутых строк. Использовать его и сопоставлять с количеством записей, которые я хочу внести? Как корректно сделать?


Ответы (1 шт):

Автор решения: fedornabilkin
$items = [[1, 'name'], [2, 'name2']];

$query = (new Query())->createCommand()->batchInsert(
    'tableName',
    ['id', 'name'],
    $items
);

if ($query->execute() != count($items)) {// rollback}
→ Ссылка