Relace a JOIN: no reference found

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
fishman305
Člen | 2
+
0
-

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_metahttps://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é…

David Matějka
Moderator | 6445
+
0
-

Zkusil si smazat cache?

fishman305
Člen | 2
+
+1
-

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