HasMany Multiple选择不工作的Cakephp

时间:2017-03-01 10:30:18

标签: php mysql cakephp

您好我正在尝试从HasMany中的多个表中选择数据,但它无效。这是我的代码

class UserInfo extends AppModel
{
    public $useTable = 'user_info';
    public $primaryKey = 'user_id';


    public $belongsTo = array(
        'User' => array(
            'className' => 'User',
            'foreignKey' => 'user_id',
            'type' => 'RIGHT',
            'fields' => array('User.user_id','User.email','User.active')
        )


    );
    public $hasMany = array(
        'UserCategory' => array(
            'className' => 'UserCategory',
            'foreignKey'    => 'user_id',
            'dependent' => true,
            'conditions' => array('user_id = UserCategory.user_id')
            //'order' => 'UserCategory. DESC'

        )


);



    public function getUserDetails($user_id){
        $this->Behaviors->attach('Containable');
        return $this->find('all', array(
            'conditions' => array(
                'UserInfo.user_id' => $user_id
            ),
            'contain' => array(
                'User', 'UserCategory.Category',

            )

        ));

    }

如果我尝试从其中具有user_id的另一个表中获取数据,就像这样

public $hasMany = array(
            'UserCategory' => array(
                'className' => 'UserCategory',
                'foreignKey'    => 'user_id',
                'dependent' => true,
                'conditions' => array('user_id = UserCategory.user_id')
                //'order' => 'UserCategory. DESC'

            ),

            'Skill' => array(
                'className' => 'Skill',
                'foreignKey'    => 'user_id',
                'dependent' => true


            )
    );

它无法获取。当我运行sql dump时。它根本不运行查询。所以意味着我无法从技能

中获取数据

1 个答案:

答案 0 :(得分:0)

我建议你仔细阅读cakephp 2中containable的文档。总之,当你使用可包含的内容时:

'contain' => array(
    'User', 'UserCategory.Category',
)

您可以在其中添加所需的模型,就像您的情况一样,这将对您有所帮助:

'contain' => array(
    'User', 'UserCategory.Category', 'Skill'
)

Containable有助于根据您的要求过滤find()数据。