HABTM 蛋糕 php 查找

Posted

技术标签:

【中文标题】HABTM 蛋糕 php 查找【英文标题】:HABTM Cake php find 【发布时间】:2014-12-05 03:47:27 【问题描述】:

我在下面有 HABTM 关联的表格。

user, group , groups_users

group , project, projects_groups

public $hasAndBelongsToMany = array(
            'Group' =>
            array(
                    'className' => 'Group',
                    'joinTable' => 'groups_users',
                    'foreignKey' => 'user_id',
                    'associationForeignKey' => 'group_id',
                    'unique' => 'keepExisting',
                    'conditions' => '',
                    'fields' => '',
                    'order' => '',
                    'limit' => '',
                    'offset' => '',
                    'finderQuery' => ''
            )
    );

我正在尝试获取所有用户,作为复选框列表,这些用户在使用项目 ID 的项目中,使用下面的查询

$users = $this->User->Group->Project->find('list', 
            array(
                  'conditions' => array('Project.id' => $this->Session->read('Projectid'))
                  ,'contain' => array(
                          'User' => array( 'fields' => 'User.id', 'User.email') 
                    )
            )
        );

但下面有错误

模型“项目”与模型“用户”没有关联

我实际上已经尝试了不同的方法来使其正常工作,但似乎无法做到正确,我怎样才能实现我想要的。干杯

【问题讨论】:

这只能通过蛋糕手册中的连接查找连接来完成 $users = $this->User->Group->Project->find('list', array( 'conditions' => array('Project.id' => $this-> Session->read('Projectid')) ,'contain' => array( Group=>array('User' => array('fields' => 'User.id', 'User.email') ) ) ) ); 我不知道最好的方法,但是尝试自定义 sql 查询怎么样? @Cakephp.Saint 我试过那个代码,说Model "User" is not associated with model "User" 如果正确定义了关系..那么我的代码将工作..我认为模式文件中的关系问题 【参考方案1】:

我通过连接实现了我想要的,有没有办法通过使用模型关联而不是手动连接选项来做到这一点?

    $options['joins'] = array(
        array('table' => 'groups_users',
            'alias' => 'gu',
            'type' => 'LEFT',
            'conditions' => array(
                'gu.user_id = User.id',
             ) 
        ),
        array('table' => 'projectGroups',
            'alias' => 'pg',
            'type' => 'LEFT',
            'conditions' => array(
                'pg.group_id = gu.group_id',
             ) 
        )
    );

    $this->User->recursive = -1;
    $options['conditions'] = array(
                    'pg.project_id = ' =>  $this->Session->read('Projectid'),
                    'User.Active = ' => true  
    );
    $users = $this->User->find('list', $options);

【讨论】:

以上是关于HABTM 蛋糕 php 查找的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP 从一个 habtm 返回多条记录

JavaWeb SSM SpringBoot网上蛋糕商城项目12(完整源码+论文《精品毕设》)主要功能:登录注册商品浏览分类模糊查找轮播图热销商品购物车订单订单流程控制用户管理

Java毕业设计+现成产品 —>java ssm springboot网上蛋糕商城项目12(完整源码+sql+论文)主要功能:登录注册商品浏览分类模糊查找轮播图热销商品购物车订单等

java ssm springboot网上蛋糕商城项目12(《精品毕设》完整源码+sql+论文)主要功能:登录注册商品浏览分类模糊查找轮播图热销商品购物车订单订单流程控制用户管理

HABTM 关联未保存 - cakephp

在 Mongodb 中通过 ObjectId 查找有多快?