Použití ActiveRow::related na vlastní instanci

před 4 měsíci

bortomar
Člen | 6
+
0
-

Zdravím, zkoušel jsem následující a rád bych se zeptal, je-li nějak možné instacovat ActiveRow tak, aby správně fungovaly metody related a ref? Nebo takového výsledku dosáhnout nelze, případně proč?

<?php
//\Nette\Database\Context $context

$table = $context->table('foo');
$fooRow = $table->get(1);
$sameFooRow = new ActiveRow(['id' => 1], $table);

$fooRelated = $fooRow->related('bar_to_foo', 'foo_id');
$sameFooRelated = $sameFooRow->related('bar_to_foo', 'foo_id');

$fooRelated->count(); // OK - počet záznamů z 'bar_to_foo'
$sameFooRelated->count(); // PHP Warning: count(): Parameter must be an array or an object that implements Countable in ...\database\src\Database\Table\GroupedSelection.php:148

?>

Snažil jsem se debugovat, ale skončil jsem u toho, že v metodě Nette\Database\Table\Selection::getReferencingTable, kterou volá právě Nette\Database\Table\ActiveRow::related, je property $this->rows v prvním případě správně inicializována, kdežto v tom druhém je null.

před 4 měsíci

Ondřej Kubíček
Člen | 419
+
+1
-

ActiveRow by sis nikdy neměl sám instancovat. Proč to potřebuješ? Čeho chceš dosáhnout?