【发布时间】:2014-06-27 08:16:30
【问题描述】:
这里是有问题的数据库表:
Companies:
____________________
| id | name |
____________________
| 1| Unimex|
| 2| Solomex|
Users:
________________________
| id | name | company_id
_________________________
| 1| John | 1
| 2| Ricky| 2
Events:
_____________________________________
| id | user_id | details | date|
_____________________________________
| 1| 1| null | 2014-04-01
| 2| 1| null | 2014-04-15
| 3| 2| null | 2013-04-01
| 4| 1| null | 2014-04-02
我想做的是检索用户列表(基于公司的 id)和他们在一系列日期的相关事件。我试图做的是:
$users = $this->User->find('all',
array(
'conditions' => array(
'company_id' => CakeSession::read("Auth.User.company_id")
),
'contain' => array(
'Event' => array(
'conditions' => array(
'Event.date >=' => $from,
'Event.date <=' => $to
)
)
)
)
);
这样我得到了用户列表及其相关事件,但不考虑$from 和$to 日期,这意味着返回特定用户的所有事件。
关系如下:
事件:
var $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id'
));
用户:
var $hasMany = array(
'Event' => array(
'className' => 'Event',
'foreignKey' => 'user_id',
'dependent' => false,
)
);
var $belongsTo = array(
'Company' => array(
'className' => 'Company',
'foreignKey' => 'company_id',
'dependent' => false,
),
);
公司:
var $hasMany = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'company_id',
'dependent' => false
));
非常感谢任何帮助或指导。
以下是 cakePHP 执行的两个查询:
SELECT `User`.`id`, `User`.`company_id`, `User`.`name`, `User`.`surname`, `User`.`email`, `User`.`phone`, `Company`.`id`, `Company`.`name`, `Company`.`address` FROM `database`.`users` AS `User` LEFT JOIN `database`.`companies` AS `Company` ON (`User`.`company_id` = `Company`.`id`) WHERE `company_id` = 54
SELECT `Event`.`id`, `Event`.`customer_id`, `Event`.`user_id`,`Event`.`details`, `Event`.`hours`, `Event`.`minutes`, `Event`.`xhours`, `Event`.`xminutes`, `Event`.`assignment`, `Event`.`start_time` FROM `database`.`events` AS `Event` WHERE `Event`.`user_id` IN (124, 125, 126, 141, 143, 144, 147, 156)
如您所见,事件字段条件中的日期未被考虑在内。如果有任何其他重要信息可以提供,请告诉我。
此外,我刚刚尝试仅检索 Event 模型的特定字段,但效果不佳。所以基本上模型只是按原样包含,没有应用其他参数。
或者可能根本不包含模型,我得到的结果只是因为 recursive 被设置为 1?
【问题讨论】:
-
你能添加那个
find的结果查询吗?检查是否是查询本身的问题或蛋糕是如何构造的。 -
刚刚添加了结果查询。
-
您显示的事件表(id | user_id | details | date)与我在查询中看到的表(id,customer_id,user_id,小时,分钟,xhours,xminutes,分配,开始时间)。这是一个错字还是有什么你没有告诉我们的(比如虚拟字段)?
-
在这种情况下,这些只是用于保存不相关数据的普通字符串。我只是想让可视化尽可能简单易懂,这就是我跳过其中一些的原因。我可以向你保证,没有其他关系、虚拟字段等。
标签: cakephp cakephp-2.3