【问题标题】:CakePHP Empty BelongsTo and hasMany relations arrayCakePHP Empty BelongsTo 和 hasMany 关系数组
【发布时间】:2014-01-28 12:39:32
【问题描述】:

我整个周末都在处理这个问题,但我似乎找不到解决方案。 我有三个模型:

用户类别:

class User extends AppModel {
      var $hasMany = array('Like','Event');
    }

喜欢类:

class Like extends AppModel {

      var $belongsTo = array ('Event','User');  
    }

事件类:

class Event extends AppModel {
     var $belongsTo = 'User';
     var $hasMany = 'Like';
    }

这是我的查找语句:

$this->set('likes', $this->Like->find('all', array(
                       'contain'=>array(
                                   'User','Event')));

我喜欢的表是:

id(int 10)
user_id(int 10)
event_id(int 10)

我的用户表有:

id(int 10)  
plus all regular user related column

我的事件表有:

id(int 10)  
user_id (int 10)
Plus all other event related columns

现在的问题:

[0]
   [Like]
         id:77
         user_id:30
         event_id:130
   [Event]
          id(null)
          user_id(null)
          title(null)
          date(null)
          etc......
   [User]
          id:30
          email:********@gmail.com
          password:**********************
          created:2013-07-07 23:45:13
          modified:2013-07-07 23:45:13
          etc.........

这是我的查询:

SELECT `Like`.`id`, `Like`.`user_id`, `Like`.`event_id`, `Event`.`id`, `Event`.`user_id`,     `Event`.`title`, `Event`.`date`, `Event`.`price_advance`, `Event`.`price_door`,    `Event`.`price_vip`, `Event`.`created`, `Event`.`bcg_img`, `Event`.`event_info`, `Event`.`event`, `Event`.`phone1`, `Event`.`phone2`, `Event`.`promoter`, `User`.`id`, `User`.`email`, `User`.`password`, `User`.`created`, `User`.`modified`, `User`.`isAdmin`, `User`.`verified`, `User`.`full_name` FROM `quadb`.`likes` AS `Like` LEFT JOIN `quadb`.`eventss` AS `Event` ON (`Like`.`event_id` = `Event`.`id`) LEFT JOIN `quadb`.`users` AS `User` ON (`Like`.`user_id` = `User`.`id`) WHERE 1 = 1

我不知道为什么我的事件数组返回 null。任何帮助将不胜感激。

编辑 更改查找代码添加订单子句后,它神奇地起作用了,我不知道为什么:

$this->set('likes', $this->Like->find('all', array(
                       'order' => array('Like.created' => 'DESC'),
                       'contain'=>array('Quad'))));

【问题讨论】:

  • 什么是输出查询,将调试级别设置为3并共享查询。
  • 我在上面添加了查询字符串。
  • eventss 不正确,正确的表应该是事件,检查您的查询
  • 对不起,那是一个错误的输入。我已经替换了实际的表名,并且可能在那里输入了一个额外的 s。
  • ok...好吧,在这种情况下只调试这个查询,php代码没有问题,只需要调试这个查询。如何首先加入 users 和 likes 表并查看输出,然后加入 users、likes 和 events...看到这个查询给出了一些输出

标签: cakephp models


【解决方案1】:
class Event extends AppModel {
 var $belongsTo = array('User');
 var $hasMany = array('Like');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    相关资源
    最近更新 更多