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
+
0
-

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
+
+1
-

zkus

$this->database->table('member')->where("paid = 0 AND :club_member.club_id = ?",$this->club_id)->count('*');
  1. smazano dvojite rovnitko u paid = 0
  2. pridana dvojtecka pred club_member, ktera znaci, ze se jedna o „has many“ relaci (to zpusobovalo ten problem
  3. do count() pridan parametr. bez parametru by to vybralo vsechny members a v php spocitalo pocet zaznamu. s parametrem to rovnou polozi spravny dotaz