Thread DBIC & many_to_many & Bedingung (1 answers)
Opened by Peter at 2013-11-19 14:23

Gast Peter
 2013-11-19 14:23
#172133 #172133
Guten Tag zusammen,

folgende Anforderung: es gebe ein "Projekt", zu dem es mehrere unterschiedliche Items (bspw. E-Mails) gleichen Typs zu speichern gibt: Diese n:m-Beziehung realisiert man in DBIC mit einer many_to_many-Beziehung - also bspw.:

Code: (dl )
1
2
3
4
5
6
7
package L::S::R::Projekt;
...

__PACKAGE__->has_many('mail_mapping', 'L::S::R::Mapping', 'project_id');
__PACKAGE__->many_to_many('mails', 'mail_mapping', 'mail');

1;

Code: (dl )
1
2
3
4
package L::S::R::Mapping;
...

__PACKAGE__->has_many('mail', 'L::S::R::Mails', 'mail_id');

Code: (dl )
1
2
package L::S::R::Mails;
...


Soweit so gut - und "einfach". Nun gibt es aber in der Mapping-Tabelle ein Flag, welches den Typen einer Mail bestimmt (bspw. 'automatisch', 'manuell' o.ä.).

Wie ermittle ich nun nur die Mails mit "Flag" 'automatisch' (welches ja ein Flag der Mapping-Tabelle ist!)?? Kann man gar direkt bei der Definition der Beziehungen verschiedene Filter fest legen??
In der Doku etc. habe ich dazu leider nichts finden können - es sollte aber doch eine Möglichkeit geben, oder??

Vielen Dank für Eure Anregungen,
Peter

ps: Gesucht wäre also etwas, dass ungefähr folgendes (My)Sql-Statement resultieren würde:
Code: (dl )
select mail.* from projekt join mapping using (project_id) left join mails using (mail_id) where mapping.type='auto'

Last edited: 2013-11-19 14:37:11 +0100 (CET)

View full thread DBIC & many_to_many & Bedingung