Empfehlungen: Erweiterte Suche

2 DB Tabellen miteinander verknüpfen

Datenbankobjekte strukturieren und validieren

2 DB Tabellen miteinander verknüpfen

Beitragvon Luka » Sa 2. Aug 2008, 23:06

Hi,

also, da ich sehr neu im Bereich cakePHP bin beisse ich mir im Moment ganz schön die Zähne aus. Ich habe eine DB mit momentan 2 Tabellen.

In einer Tabelle stehen Kategorien, in der anderen Rezepte. (Wird gerne als Beispiel genommen)

1. Ich habe es nun geschafft auf einer Seite die Kategorien ausgeben zu lassen.
2. Dann kann man auf eine Kategorie klicken
3. und es soll nun natürlich eine Liste der Rezepte dieser Kategorie angezeigt werden,
4. danach soll man dann auf einen Rezeptnamen klicken können und das Rezept selber anschauen können.

Also, bis zum 2. Schritt klappt es. Ich habe einen MaincategoriesController und einen RecipesController. Dann natürlich 2 views in den Ordnern Maincategories und Recipes.

Mein Link sieht nun so aus:
Code: Alles auswählen
echo $html->link($Maincategoryvalue['Maincategory']['Maincategory'],"/recipes/view/".$Maincategoryvalue['Maincategory']['ID']);


Auf der nächsten Seite erscheinen nun aber nicht die Rezepte, SQl Statement sieht so aus "recipes` AS `Recipe` WHERE `Recipe`.`id` = '5' LIMIT 1"

Erstmal die Verbindung zwischen "Maincategories Table" ist ID "Recipes Table": MaincategoryID. Wie kann ich also
1. im Part WHERE umstellen, dass im Table recipes nach MaincategoryID gesucht wird?
2. Das Limit 1 verschwindet?

Cake ist wirklich nicht einfach, hoffentlich begreife ich das irgendwann mal. Hoffe jemand hat eine Antwort. Vielen Dank.
Luka
 
Beiträge: 24
Registriert: Sa 2. Aug 2008, 13:56
CakePHP-Version: 1.2
OS: XP

Re: 2 DB Tabellen miteinander verknüpfen

Beitragvon Luka » So 3. Aug 2008, 10:37

Hi,

habe die Lösung selber gefunden. Ich kann an die Funktion find() noch einen weiteren Parameter mit den Conditionen uebergeben. Für alle anderen die es interessiert:

Code: Alles auswählen
$this->set('recipes', $this->Recipe->find('all',array('conditions' => array('MaincategoryID' => $id))));


Ich dachte übrigens das ich dafür auch

var $hasMany = array('Recipes');
var $belongsTo = array('Maincategories');

in die jeweiligen Controller einbauen müsste, war aber nicht der Fall. Komisch, na ja finde vielleicht noch raus, wann ich das Einbauen muss. Ist wirklich nicht einfach.
Luka
 
Beiträge: 24
Registriert: Sa 2. Aug 2008, 13:56
CakePHP-Version: 1.2
OS: XP

Re: 2 DB Tabellen miteinander verknüpfen

Beitragvon Mathias » Mo 4. Aug 2008, 13:55

Die Verknüpfungen finden ja im jeweiligen Model statt. Somit muss nichts im Controller definiert werden. Je nach Situation müsstest du eventuell einige Models in der $uses Variable binden. Das sollte dann aber durch Debug-Modus gut zu sehen sein.
cheers
Benutzeravatar
Mathias
 
Beiträge: 225
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.3.x
OS: OS X 10.6.x

Re: 2 DB Tabellen miteinander verknüpfen

Beitragvon tatoosh » Do 11. Dez 2008, 18:29

Habe ein ähnliches Problem zum verbinden von Tabellen.

Habe 2 Tabellen, Bücher und Authoren, eine dritte um die IDs der Inhalte zu verknüpfen.
Wie kann ich nun in cakephp die Tabellen verbinden. muss ich mit
Code: Alles auswählen
belongsto
arbeiten?
habe hier nachgeschaut, aber werde nicht ganz schlau daraus:
http://book.cakephp.org/view/78/Associations-Linking-Models-Together
tatoosh
 
Beiträge: 9
Registriert: Do 11. Dez 2008, 18:04

Re: 2 DB Tabellen miteinander verknüpfen

Beitragvon Alex » Do 11. Dez 2008, 22:02

Code: Alles auswählen
var $hasAndBelongsToMany...

Dann kannst du mit Relation-Tables arbeiten.
Alex
 
Beiträge: 120
Registriert: Di 13. Mai 2008, 13:39
Wohnort: Bremen
CakePHP-Version: 1.x.x
OS: OSX / Win 7 / Debian


Zurück zu Models

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste