Select z M:N vazby s podmínkou
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- rfilip
- Člen | 20
Mám tři tabulky:
club (id,…)
member (id,paid,…)
které jsou spojeny do m:n vazby tabulkou:
club_member (club_id,member_id)
Potřebuji zjistit kolik členů klubu s daným id
($this->club_id
) nemá zaplaceny přísvěvky
(paid == 0
)
Zkoušel jsem to následujícím voláním ($this->database
je
objekt třídy Nette\Database\Context
):
$this->database->table('member')->where("paid == 0 AND club_member.club_id = ?",$this->club_id)->count();
Výsledek:
Tracy hlásí:
Nette\Database\Reflection\MissingReferenceException
No reference found for $member->club_member
Co dělám špatně? Jak ten dotaz položit správně?
- David Matějka
- Moderator | 6445
zkus
$this->database->table('member')->where("paid = 0 AND :club_member.club_id = ?",$this->club_id)->count('*');
- smazano dvojite rovnitko u
paid = 0
- pridana dvojtecka pred
club_member
, ktera znaci, ze se jedna o „has many“ relaci (to zpusobovalo ten problem - do
count()
pridan parametr. bez parametru by to vybralo vsechny members a v php spocitalo pocet zaznamu. s parametrem to rovnou polozi spravny dotaz