整个周末我一直在研究这个问题,我似乎无法找到解决方案。 我有三种模式:
用户类:
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'))));
答案 0 :(得分:0)
class Event extends AppModel {
var $belongsTo = array('User');
var $hasMany = array('Like');
}