正常的多对多表,通常那个中间表只有两个字段,但是特殊情况下,该怎么去关联这种 MANY_MANY 呢?比如:
有company, department, contact三个表,都和email表相关联,都是多对多的关系,中间表叫做email_record
company表:
company_id
email_id
department表:
department_id
email_id
contact表:
contact_id
email_id
email表:
email_id
email_record表:
email_id
record_id
type (ENUM, 值为 ‘company’, ‘department’, ‘contact’) 用来区分每条记录究竟是要和哪个表相关联
请问如何定义email表中的关联?我用下面的方法,提示错误:
‘rCompany’ => array(self::MANY_MANY, ‘Company’, ‘email_record(record_id, email_id)’, ‘condition’ => ‘rCompany.type=\‘company\’’),
‘rDepartment’ => array(self::MANY_MANY, ‘Department’, ‘email_record(record_id, email_id)’, ‘condition’ => ‘rDepartment.type=\‘department’’),
‘rContact’ => array(self::MANY_MANY, ‘Contact’, ‘email_record(record_id, email_id)’, ‘condition’ => ‘rContact.type=\‘contact’’),
如果去掉 condition 里的 ‘rCompany.’, ‘rDepartment.’, ‘rContact.’ 也许错误会消失,但是如果将来关联到的其它表里,正好也有个字段名是type的话,就会有问题
在AR生成的sql语句中,是否rCompany关联中的email_record表别名一定会是 rCompany_rCompany ?