Cannot read an undeclared column ‚team‘

MikKuba
Člen | 76
+
0
-

Ahoj,

Myslel jsem si, že to bude nějaká prkotina, ale prostě se nemůžu vymotat z takové banality.

Schéma db zde

Následně chci do gridu vypsat informace z tabulky match a samozřejmě ID čísla ve sloupcích home a guest nahradit názvy z tabulky – cizí klíče mám dobře nastavené – taky snad viz schéma nahoře.

Když pak chci v render metodě vypsat místo ID týmu napsat název týmu, tak volám

$item->team->name

ale bohužel to skončí chybou „Cannot read an undeclared column ‚team‘“.

Když bych zkusil zapsat

$item->home->team->name

tak chyba je „Trying to get property of non-object“.

Co prosím přehlížím?
Díky :)

GEpic
Člen | 562
+
+1
-

v tabulce match není žádný sloupec team

zkus:

$item->home->name

Editoval GEpic (26. 8. 2018 18:35)

MikKuba
Člen | 76
+
0
-

GEpic napsal(a):

v tabulce match není žádný sloupec team

zkus:

$item->home->name

To právě vypíše „Trying to get property of non-object“..
Je problém už to, že když si prostě dumpnu $context->table("match") nebo konkrétní řádek s ID, tak už ani v tomto výsledku nevidím hodnoty z tabulky team? Nebo to je v cajku a má se to vypsat až později?

GEpic
Člen | 562
+
0
-

Fakt si zkoušel to, co jsem ti poslal já, nebo to, cos zmínil ty – $item->home->team->name?

Jinak já většinou pojmenovávám sloupečky se sufixem _id (je to tak i v dokumentaci), aby bylo jasné že jde o referenci, poté to můžeš v nette používat bez toho _id. Tzn. sloupeček, který se bude jmenovat team_id pak můžeš volat přes $item->team->name

Editoval GEpic (26. 8. 2018 18:43)

MikKuba
Člen | 76
+
0
-

GEpic napsal(a):

Fakt si zkoušel to, co jsem ti poslal já, nebo to, cos zmínil ty – $item->home->team->name?

Jinak já většinou pojmenovávám sloupečky se sufixem _id (je to tak i v dokumentaci), aby bylo jasné že jde o referenci, poté to můžeš v nette používat bez toho _id. Tzn. sloupeček, který se bude jmenovat team_id pak můžeš volat přes $item->team->name

Jojo, zkoušel jsem $item->home->name.. Přidal jsem i ten suffix tomu sloupečku, ale bez něj mi to nejde zavolat, píše to „Cannot read an undeclared column ‚home‘“

GEpic
Člen | 562
+
0
-

vymaž cache

Phalanx
Člen | 310
+
0
-

Je to přesně jak píše @GEpic, správně by mělo být:

<?php
$item->home->name
?>

Zkontroluj si:

  1. měl bys mít sloupce pojmenované home_id a guest_id
  2. nad těmito sloupci musíš mít definovaný cizí klíč (podle schématu máš)
  3. smaž cache
  4. home_id může být null, takže bys to měl ošetřit
<?php
{if(!empty($item->home_id))}
	{$item->home->name}
{/if}

// zkus si dumpnout proměnné co v nich máš
{dump $item->home_id}
{dump $item->home}
?>
Renyl
Člen | 6
+
+2
-

Tohle vlákno mě zachránilo. Ještě doplním 5. bod do příspěvku od @Phalanx , kdyby náhodou také někdo řešil a to je

5. jména tabulek nepište v množném čísle např. teams – správně je team.

Pavel Kravčík
Člen | 1182
+
0
-

6. Pro sportovní DB – zápas pojmenujte game a ne match.