在HABTM关联的情况下,Cakephp深入使用可包含

时间:2013-11-07 16:22:22

标签: php cakephp has-and-belongs-to-many

我正在测试CakePHP中的Has和Belongs To Many关系。这是我的数据库模型:

  

联系拥有并属于许多联系

     

联系有一个

因此,我的联系模式如下:

public $hasOne = array(
    'Person'
);
public $hasAndBelongsToMany = array(
    'ContactLinks' => array(
        'className' => 'Contact',
        'joinTable' => 'contacts_contacts',
        'foreignKey' => 'contact_id_1',
        'associationForeignKey' => 'contact_id_2',
    )
);

为避免使用深度递归值,我使用可包含的行为。 这是我的发现:

$data = $this->Contact->find('first', array(
                        'conditions' => array(
                                'Contact.id' => 15
                        ),
                        'contains' => array(
                            'Contact' => array(
                                'Person'
                            ),
                        ),
                    ));

这个请求对我来说很好。由于联系人有一个人,我寻找人进入联系人容器。但是,它不起作用:(

我的结果数组看起来像这样:

[ContactLinks] => Array
    (
        [0] => Array
            (
                [id] => 56
                [created] => 0000-00-00 00:00:00
                [modified] => 2013-10-31 11:41:28
                [creator_id] => 1
                [modificator_id] => 2
                [type] => person
                [ContactsContact] => Array
                    (
                        [id] => 1
                        [contact_id_1] => 15
                        [contact_id_2] => 56
                        [link_type] => firm
                        [link_description] => Stagiaire
                    )

            )

        [1] => Array
            (
                [id] => 30
                [created] => 0000-00-00 00:00:00
                [modified] => 0000-00-00 00:00:00
                [creator_id] => 1
                [modificator_id] => 
                [type] => person
                [ContactsContact] => Array
                    (
                        [id] => 2
                        [contact_id_1] => 15
                        [contact_id_2] => 30
                        [link_type] => 
                        [link_description] => Patron
                    )

            )

    )

似乎CakePHP没有在Contact和Person之间建立链接。

有关如何解决此问题的想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为使用错误的别名时会出现问题。试试这个

$data = $this->Contact->find('first', array(
  'conditions' => array(
  'Contact.id' => 15
 ),
'contains' => array(
 'ContactLinks' => array('Person'))
));

编辑:错字警报 - > 'contains'应该是'包含'

$data = $this->Contact->find('first', array(
  'conditions' => array(
  'Contact.id' => 15
 ),
'contain' => array(
 'ContactLinks' => array('Person'))
));