Insert – počet ovlivněných řádků

aha009
Člen | 50
+
0
-

Ahoj,
mám krátký dotaz. Jak u insertu dostanu počet vložených řádků? Děkuji

$context->table('author')->insert([
	[
		'name' => 'Sansa Stark',
		'born' => null
	], [
		'name' => 'Arya Stark',
		'born' => null
	]
]);
// INSERT INTO `author` (`name`, `born`) VALUES ('Sansa Stark', NULL), ('Arya Stark', NULL)

Editoval aha009 (26. 11. 2020 7:34)

Ages
Člen | 128
+
0
-

Ahoj, vrací to přímo ta metoda.

$affected = $context->table('author')->insert([
	[
		'name' => 'Sansa Stark',
		'born' => null
	], [
		'name' => 'Arya Stark',
		'born' => null
	]
]);
bdump($affected) ;

btw: jsem na mobilu nevím zda tam není překlep

aha009
Člen | 50
+
0
-

No, kdyby to bylo takhle, tak super. To jsem již zkoušel a funguje mi to na update ale ne na insert.

$affected1 = $this->database->table('invoices')
    ->where('user_id = ?', 60)
    ->update([
        'diet_id' => '888',
    ]);
bdump($affected1); // počet ovlivněných řádků

$affected2 = $this->database->table('invoices')
    ->insert([
        ['diet_id' => '888'],
        ['diet_id' => '999'],
    ]);
bdump($affected2); // Nette\Database\Table\ActiveRow
lookass
Člen | 54
+
0
-

Z dokumentace: Má-li tabulka definovaný primární klíč, vrací nový řádek jako objekt ActiveRow. (Myšleno fce insert())

aha009
Člen | 50
+
0
-

Dle rady co jsem získal, tak řešením je spočítat data, která budu vkládat nebo database->query

$affected = $this->database->query('INSERT INTO invoices (diet_id) VALUES (777), (888), (999)');
bdump($affected->getRowCount()); // return 3

Děkuji @JaxP