Das geht in der Tat nicht so einfach. Mir fällt auf Anhieb auch nichts
besseres ein als das hier:
$tags = $this->Article->ArticleTag->findAll(array('ArticleTag.tag' =>'news'));
$responsibles =
$this->Article->Responsible->findAll(array('Responsible.id => 27));
$article_ids1 = Set::extract($tags, "{n}.Article.id");
$article_ids2 = Set::extract($responsibles, "{n}.Article.id");
$article_ids = array_intersect($article_ids1, $article_ids2);
$articles = $this->Article->findAll('Article.id IN(' .
join($article_ids, ',') . ')');
Das liegt daran, dass das Cake Model nicht alle Beziehungen über Joins
auflöst. Über DEBUG=2 in der core.php kannst du dir genauer anschauen
wie die Queries aussehen, die Cake generiert.
Schöne Grüße,
Timo
Am 03.12.07 schrieb pow1976 <[EMAIL PROTECTED]>:
>
> Hallo :-)
>
> ich habe ein großes Problem. Da ich noch ziemlich am Anfang mit meinen
> CakePHP Kenntnissen stehe, hoffe ich hier Hilfe zu meinem Problem zu
> finden:
>
> Ich habe mehrere Models. Article, ArticleTag und Responsible diese
> sind wie folgt verknüpft:
>
> Article <> (HABTM) ArticleTag, Responsible
>
> d.h. einem article können ein oder mehrere Tags zuegeordnet werde
> sowie auch ein oder mehrere Responsibles
> wenn ich jetzt z.b.
>
> $this->Article->ArticleTag->findAll(array('ArticleTag.tag' =>
> 'news'));
>
> ausführe bekomme ich alle Article denen dieser Tag zugeordnet ist.
> Soweit so gut. das gleiche kann ich auch für Responsible machen.
>
> $this->Article->Responsible->findAll(array('Responsible.id => 27));
>
> Wie aber muss so ein findAll() aussehen wenn ich beides in einem
> Aufruf machen möchte. Also alle Article mit nem bestimmten Tag von
> einem bestimmten Responsible? Wenn ich versuche das in dem Article
> Model zu machen:
>
> $this->Article->findAll(array('ArticleTag.tab' => 'news',
> 'Responsible.id' => 27));
>
>
> bekomme ich die Fehlermeldung das es das Feld nicht gibt. Was mache
> ich falsch? Wäre super wenn mir jemand helfen könnte.
> >
>
--
Timo Derstappen
http://teemow.com
mailto:[EMAIL PROTECTED]
--~--~---------~--~----~------------~-------~--~----~
Sie erhalten diese Nachricht, weil Sie Mitglied sind von Google Groups-Gruppe
"CakePHP-de für deutsche CakePHP Entwickler".
Für das Erstellen von Beiträgen in dieser Gruppe senden Sie eine E-Mail
an [email protected]
Um sich von dieser Gruppe abzumelden, senden Sie eine E-Mail an [EMAIL
PROTECTED]
Weitere Optionen finden Sie in dieser Gruppe unter
http://groups.google.com/group/cakephp-de?hl=de
-~----------~----~----~----~------~----~------~--~---