Relace a JOIN: no reference found
- fishman305
- Člen | 2
Ahoj borci. Chci se poradit. Je možný, že špatně hledám nebo že mám chybu uplně někde jinde než myslím.
Mám tabulku poptávek (demands
). K ní mám druhou tabulku s
„metainformacema“ o nich (demands_meta
), kterou mám hlavně
proto, abych mohl ke každé poptávce přiřazovat více kategorií.
Relaci mám tedy v tabulce demands_meta
ve vztahu k tabulce
demands
.
Ukázka tabulky demands
: https://s4.postimg.org/…/demands.png
Ukázka tabulky demands_meta
: https://s4.postimg.org/…h6l/meta.png
No a snažím se vybrat všechny poptávky, které mají ID kategorie např. 120. Do presenteru tedy píšu:
<?php
$demandsView = $this->demandsManager->getPublicDemands()
->where('ID_demands.property = ?','category')
->where('ID_demands.value = ?','120');
?>
Snažím se prostě dostat tento MySQL příkaz (kterej takhle sám o sobě funguje):
„SELECT * FROM i5_demands
JOIN i5_demands_meta
ON
i5_demands
.ID_demands
=
i5_demands_meta
.ID_demands
WHERE
i5_demands_meta
.property
= ‚category‘ AND
i5_demands_meta
.value
= ‚120‘ ORDER BY
i5_demands
.ID_demands
DESC“
kdy getPublicDemands() je má vlastní metoda v modelu vypadající takto:
<?php
public function getPublicDemands()
{
return $this->database
->table('i5_demands')
->select('i5_demands.ID_demands,
i5_demands.ID_geo_countries,
i5_demands.ID_geo_areas,
i5_demands.ID_geo_regions,
i5_demands.description_'.$this->locale.',
i5_demands.time_added')
->where('i5_demands.description_'.$this->locale.' IS NOT NULL')
->order('i5_demands.ID_demands DESC');
}
?>
No a dostávám chybu: „Nette\InvalidArgumentException. No reference found for $i5_demands->ID_demands.“
Chápu, že s tím asi souvisí tahle věta z dokumentace:
Musíme napsat pouze jméno „spojovacího klíče“ relace a název sloupce spojené tabulky. „Spojovací klíč“ je odvozen od jména sloupce, který odkazuje na tabulku, se kterou se chceme spojit.
Ale co to prostě znamená? Zkoušel jsem „ID_demands.property“, „demands.property“, „demands_meta.property“ a podobně.. prostě tomu nerozumím.. To mám nějak vytáhnout název toho spojovacího klíče z INFORMATION SCHEMA ?
Můžete mi prosím poradit? Je to asi hloupej dotaz, pravděpodobně jsem někde něco přeskočil, ale není mi to ani trochu jasné…
- fishman305
- Člen | 2
Vyřešeno, ono stačilo se to takhle sám pro sebe sepsat a řešení mě napadla sama… :) děkuji za příležitost