Empfehlungen: Erweiterte Suche

HABTM-Tabelle zum Suchen nutzen

Datenbankobjekte strukturieren und validieren

HABTM-Tabelle zum Suchen nutzen

Beitragvon getit » So 7. Jun 2009, 09:39

Hallo,

kann mir jemand sagen wie ich eine HABTM-Tabelle (das Ergebnis von zwei Tabellen die in habtm-Beziehung stehen) zum suchen nutzen kann?

Bsp.:
Ich habe die Tabelle 'clients'.
Zweitens habe ich die Tabelle 'groups'.

Beide stehen in einer habtm-Beziehzung. Das Ergebnis 'clients_groups'.

'clients' sieht vereinfacht so aus:
id name
1 Test1
2 Test2

'groups' sieht so aus:
id group
1 Selbsthilfegruppe
2 Kleingruppe

Die Verknüpfungstabelle ('clients_groups') so:
id client_id group_id
1 1 1
2 1 1
3 2 2

D.h. Client "Test1" ist in Gruppe Selbsthifegruppe und Kleingruppe.
Client "Test2" ist in Kleingruppe.

Jetzt möchte ich die Anzahl der Einträge in der habtm-Tabelle zählen die alle die gleiche group_id haben?

Aber wie komme ich an die Verknüpfungstabelle ran?

Ich meine es geht auch kompliziert indem ich nen find('all') über Clients laufen lasse, durch die Arrays spaziere und sortiere.
Aber gibt es da keinen einfacheren Weg?
getit
 
Beiträge: 105
Registriert: Mo 22. Dez 2008, 13:06
CakePHP-Version: 1.2.1.8004
OS: Vista

Re: HABTM-Tabelle zum Suchen nutzen

Beitragvon dth33 » So 7. Jun 2009, 14:34

Hi,

bei mir kann man Benutzer zu bestimmten Läden oder Filialen zuordnen:

dazu als Beispiel folgende Tabellen:

markets
---------
id
name
usw...

users
-----
id
name
username
usw....

markets_users
-----------------
market_id
user_id


Dann kann ich folgendes machen:

Code: Alles auswählen
       
// Welche Märkte gehören zum eingeloggten User?
$joinRecords = $this->User->MarketsUser->findAll(array('MarketsUser.user_id' => $this->Auth->user('id')));
 


Mit dem Array weiterarbeiten:

Code: Alles auswählen

// Märkte-Ids aus dem Array holen
$extractMarkets = Set::extract('/MarketsUser/market_id', $joinRecords);
 


Am Ende setze ich Filter für die view
Code: Alles auswählen

// Beispiel: Nur die Märkte zur Auswahl zulassen, welche zum User gehören
$markets = $this->Delivery->Market->find('list', array('conditions' => array('Market.id' => $extractMarkets)));
 


Gruß Steffen
dth33
 
Beiträge: 33
Registriert: Do 22. Jan 2009, 15:38
Wohnort: Am schönen Niederrhein
CakePHP-Version: 1.3
OS: Win32

Re: HABTM-Tabelle zum Suchen nutzen

Beitragvon getit » So 7. Jun 2009, 18:03

Coole Sache!
Danke.
getit
 
Beiträge: 105
Registriert: Mo 22. Dez 2008, 13:06
CakePHP-Version: 1.2.1.8004
OS: Vista


Zurück zu Models

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast