NetteDB a testování existence vazby has one
- mnovy
- Člen | 5
Ahoj,
řeším rozdílné chování detekce existence vazby has one u php
5.6 a 7.0.
Mám několik tabulek, které mají mezi sebou relaci has one.
tableA → tableB → tableC
Pro detekci hodnoty sloupce columnX v tabulce tableC pro konkrétní záznam z tabulky tableA používám následující kód:
<?php
$row = $this->table_a_model->get($id)->fetch();
...
if (isset($row->tableB->tableC->columnX) then {
...
}
?>
V php 5.6 to funguje bez problémů správně, v php 7.0 se to chová jinak. Hledal jsem v dokumentaci a našel testování s využitím, že metoda ref() vrací instanci ActiveRow nebo null:
<?php
if ($book->translator) {
echo ' (translated by ' . $book->translator->name . ')';
}
?>
A podmínku upravil na
<?php
$row = $this->table_a_model->get($id)->fetch();
...
if ($row->tableB->tableC) then {
...
}
?>
jenže to zase vyhazuje pod php 7.0 E_NOTICE: Trying to get property of non-object.
Prosím o radu, jak správně detekovat existenci relace has one přes více
tabulek za sebou? Psaní
$row->tableB && $row->tableB->tableC
se mi
nelíbí. Děkuji
Používám Nette\Databbase v poslední verzi.