Нетте — база данных INSERT — количество затронутых строк

Я хотел бы узнать количество затронутых (вставленных) строк после вставки в таблицу. Я не понял, как это сделать в документации. Обновление возвращает количество затронутых строк. Вставка возвращает Nette\Database\Table\ActiveRow Как мне ее получить?

$affected = $context->table('author')->insert([
    [
        'name' => 'Sansa Stark',
        'born' => null
    ], [
        'name' => 'Arya Stark',
        'born' => null
    ]
]);
bdump($affected); //  Nette\Database\Table\ActiveRow - I need the number of inserted records

person Bob    schedule 27.11.2020    source источник


Ответы (1)


Nette Database Explorer не возвращает счетчик после insert(). Это бесполезная информация, если вы можете подсчитать данные перед вставкой самостоятельно.

$data = [...];
$count = count($data);
$context->table('author')->insert($data);

Он работает только с update и delete, как указано в документации. .

$count = $context->table('author')
    ->where('id', 10)
    ->delete();

Это может быть возможно с getRowCount() вместо query в Nette Database Core

person Jax-p    schedule 27.11.2020
comment
Спасибо за помощь. Можно было сделать так, как вы пишете: $affected = $this->database->query('INSERT INTO invoices (name, born) VALUES ('Sansa Stark', ''), ('Arya Stark', ''); bdump($affected->getRowCount()); // return 2 - person Bob; 27.11.2020