Cakephp - 调用方法后HABTM关系丢失了

时间:2013-08-22 20:17:33

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

问题

我需要在getContacts函数中调用两个方法。这些方法如下:

方法1: $ authenticated = $ this-> authenticateUserInternal($ inputData ['auth']);

方法2: $ result = $ this-> Consumer-> find('first',array('conditions'=> array('Consumer.id'=> 81)));

当我一个接一个地调用这些方法时,$ result中的结果集没有来自相关表的数据。似乎方法1以某种方式杀死关系或影响我的结果,但它在AppController中是一个完全不相关的函数。

代码

Consumer模型通过连接表consumers_users与我的Users模型建立了HABTM关系。

消费者模式

public $hasAndBelongsToMany = array(
'User' => array( 'className' => 'User', 'joinTable' => 'consumers_users', 'foreignKey'     => 'consumer_id', 'associationForeignKey' => 'user_id', ));

用户模型

public $hasAndBelongsToMany = array(
'Consumer' => array(
    'className' => 'Consumer',
    'joinTable' => 'consumers_users',
    'foreignKey' => 'user_id',
    'associationForeignKey' => 'consumer_id',
));

消费者用户模型

public $belongsTo = array(
'User' => array( 'className' => 'User', 'foreignKey' => 'user_id', ), 'Consumer' =>        array( 'className' => 'Consumer', 'foreignKey' => 'consumer_id', ), );

我的正常结果

"Consumer": {

"id": "81",
"fullname": "consumer2",
"email": "consumer2@cici.mailgun.org",
"password": "111111",
"dateregistered": "2013-08-18",
"audio": "0"
}, "User": [

{
    "id": "179",
    "fullname": "leesa",
    "email": "lda@hotmail.com",
    "password": "111111",
    "imageurl": "http://bridgefiles.s3.amazonaws.com/2013-07-18-144613_IMG_0773.jpeg",
    "thumb_url": "http://bridgefiles.s3.amazonaws.com/2013-07-18-144613_IMG_0773.jpeg",
    "messagecount": "2",
    "dateregistered": "2013-07-29",
    "phone1": null,
    "phone2": null,
    "videoaddress": null,
    "ConsumersUser": {
        "id": "17",
        "consumer_id": "81",
        "status": "accepted",
        "user_id": "179"
    }
},

实际结果

"Consumer": {

"id": "81",
"fullname": "consumer2",
"email": "consumer2@cici.mailgun.org",
"password": "111111",
"dateregistered": "2013-08-18",
"audio": "0"
}

1 个答案:

答案 0 :(得分:0)

您只选择表使用者,我认为正确的方法是加载连接表并插入递归1以检索表使用者和用户
试试这个:

$this->loadModel('ConsumersUsers');
 $result = $this->ConsumersUsers->find('first', array( 'conditions' => array('Consumer.id' => 81), 'recursive' => 1));
相关问题