Cakephp 复杂的HABTM查询,我可以';不行
使用CakePhp 2.3Cakephp 复杂的HABTM查询,我可以';不行,cakephp,Cakephp,使用CakePhp 2.3 大家好,我正在尝试对我的系统进行一个复杂的查询,但我不知道如何完成它。所以事情是这样的: 这是一个事件系统,成员可以创建事件并向其注册。为此,我有3个表:用户、事件和事件用户。用户HABTM事件,事件HABTM用户。 我还有3种型号: User.php <?php class User extends AppModel{ public $hasAndBelongsToMany = array('Event'); public $hasMany
大家好,我正在尝试对我的系统进行一个复杂的查询,但我不知道如何完成它。所以事情是这样的:
这是一个事件系统,成员可以创建事件并向其注册。为此,我有3个表:用户、事件和事件用户。用户HABTM事件,事件HABTM用户。
我还有3种型号:
User.php
<?php
class User extends AppModel{
public $hasAndBelongsToMany = array('Event');
public $hasMany = array('EventUser');
}
<?php
class Event extends AppModel{
public $hasAndBelongsToMany = array('User');
public $hasMany = array('EventUser');
}
<?php
class EventUser extends AppModel {
public $useTable = 'events_users';
public $belongsTo = array('Event', 'User');
}
<?php
class UsersController extends AppController{
function show($id){
// User info
$user = $this->User->find('first', array(
'recursive' => 0,
'conditions' => array('User.id' => $id)
));
// Registered events
$registered = $this->User->EventUser->find('all', array(
'conditions' => array('User.id' => $id)
));
// Created Events
$created = $this->User->Event->find('all', array(
'conditions' => array('Event.userid' => $id)
));
$this->set(compact('user', 'registered', 'created'));
}
}
您只需要一个型号用户
代码应该是
<?php
class User extends AppModel{
public $hasAndBelongsToMany = array('Event');
}
谢谢你的回答,但是通过这个查询,我得到了用户id所在的所有元素。我想得到的是有这个用户和其他用户的所有事件。事实上,查询会这样说:在events\u users中获取user\u id=1的所有事件,在他注册的所有事件中获取向他注册的其他用户。我猜它必须在事件中被查询,我猜不是吗?我很迷茫^^^^还有这个可以控制的用法谢谢你的帮助,但我只是放弃了。对于我所需要的,它变得太复杂了,所以我保持简单。
<?php
class User extends AppModel{
public $hasAndBelongsToMany = array('Event');
}
$data = $this->User->read(null, $id);