我花了三天时间处理这个问题,但已经走到了尽头,无法继续。我知道如何使用非cakephp方法获取所需的数据,但我更喜欢使用cakephp的模型关系。
我的模特
class User extends AppModel {
var $hasOne = 'Profile';
}
class Profile extends AppModel {
var $belongsTo = 'User';
var $hasAndBelongsToMany = array('Quad' => array('className' => 'Quad'));
}
class Quad extends AppModel{
var $belongsTo = 'User';
var $hasAndBelongsToMany = array ('Performer' => array ('className' =>'Performer'));
}
class Performer extends AppModel {
var $name = 'Performer';
var $hasAndBelongsToMany = array('Quad' => array('className' => 'Quad'));
}
我的HABTM表格
(perfomers:ID |名称|图像|创建|修改) (四边形:ID | user_ID的|等.....) (performers_quads:ID | performer_id | quad_id)
我的个人资料控制器索引方法
public function index($uid) {
$user = $this->Profile->User->find('all', array(
'contain' => array(
'Quad' => array('contain'=>array('Performer'))),
'conditions' => array(
'User.id' => $uid)));
$this->set(compact('user'));
}
我的结果数组
UserArray (
[0] => Array (
[User] => Array (
[id] => 19
[email] => *****@gmail.com
[password] => ***
[created] => 2013-06-13 23:35:42
[modified] => 2013-06-13 23:35:42 )
[Profile] => Array (
[id] => 21
[user_id] => 19
[username] => ****
[first_name] => ****
[last_name] => ****
[imageId] => ****.jpg
[created] => 2013-06-13 23:35:43
[modified] => 2013-06-17 01:05:22 )
[Quads] => Array (
[0] => Array (
[id] => 65 [user_id] => 19
[title] => Test Event
[date] => 2013-06-15 16:53:00
[price] => 25.00
[venueID] => 1
[created] => 2013-06-17 01:05:22 )
[1] => Array (
[id] => 66
[user_id] => 19
[title] => Test Event 2
[date] => 2013-06-12 17:12:00
[price] => 50.00
[venueID] => 1
[created] => 2013-06-17 01:05:22 ) ) ) )
我需要什么
UserArray (
[0] => Array (
[User] => Array (
[id] => 19
[email] => *****@gmail.com
[password] => ***
[created] => 2013-06-13 23:35:42
[modified] => 2013-06-13 23:35:42 )
[Profile] => Array (
[id] => 21
[user_id] => 19
[username] => ****
[first_name] => ****
[last_name] => ****
[imageId] => ****.jpg
[created] => 2013-06-13 23:35:43
[modified] => 2013-06-17 01:05:22 )
[Quads] => Array (
[0] => Array (
[id] => 65 [user_id] => 19
[title] => Test Event
[date] => 2013-06-15 16:53:00
[price] => 25.00
[venueID] => 1
[created] => 2013-06-17 01:05:22
[Performer] => Array(
[0] => Array(
[id] => ***
[name] => ****
etc....)))
[1] => Array (
[id] => 66
[user_id] => 19
[title] => Test Event 2
[date] => 2013-06-12 17:12:00
[price] => 50.00
[venueID] => 1
[created] => 2013-06-17 01:05:22
[Performer] => Array(
[0] => Array(
[id] => ***
[name] => ****
etc....)))))))
我想要完成的是在ProfilesController中将Performers属于属于User的Quads。任何有关这方面的帮助将不胜感激。
答案 0 :(得分:1)
这就是我最终解决问题的方法
<强>型号:强>
class AppModel extends Model {
var $actsAs = array(
'Containable');
}
class Performer extends AppModel {
var $name = 'Performer';
}
class Quad extends AppModel {
var $belongsTo = 'User';
var $hasAndBelongsToMany = array ('Performer');
}
class Profile extends AppModel {
var $belongsTo = 'User';
}
class User extends AppModel {
var $hasOne = 'Profile';
var $hasMany = 'Quad';
}
在配置文件控制器中:
public function index($uid)
{
$user = $this->Profile->User->find('all', array(
'contain' => array('Quad' =>array('Performer'), 'Profile'),
'conditions' => array('User.id' => $uid)));
$this->set(compact('user'));
}
和结果:
UserArray
(
[0] = Array
(
[User] = Array
(
[id] = 19
[email] = *****@gmail.com
[password] *****
[created] = 2013-06-13 23:35:42
[modified] = 2013-06-13 23:35:42
)
[Profile] = Array
(
[id] = 21
[user_id] = 19
[username] = ********
[first_name] = *********
[last_name] = **********
[imageId] = id8fkwd_b81a24524aa20f2c4156277d1b6a7c27_1371445522.jpg
[created] = 2013-06-13 23:35:43
[modified] = 2013-06-17 01:05:22
)
[Quad] = Array
(
[0] = Array
(
[id] = 65
[user_id] = 19
[title] = Test Event
[date] = 2013-06-15 16:53:00
[price] = 25.00
[venueID] = 1
[Performer] = Array
(
[0] = Array
(
[id] = 1
[name] = ********
[verified] = 1
[photo] = 1
[photoname] = *****1370810034.jpg
)
[1] = Array
(
[id] = 2
[name] = ******
[verified] = 1
[photo] = 1
[photoname] = ******_1370810315.jpg
)
)
[created] = 2013-06-15 16:53:00
)
[1] = Array
(
[id] = 66
[user_id] = 19
[title] = Test Event 2
[date] = 2013-06-12 17:12:00
[price] = 50.00
[venueID] = 1
[Performer] = Array
(
[0] = Array
(
[id] = 1
[name] = *******
[verified] = 1;
[photo] = 1
[photoname] = *****_1370810034.jpg
)
[1] = Array
(
[id] = 2
[name] = ******
[verified] = 1
[photo] = 1
[photoname] = ******_1370810315.jpg
)
[2] = Array
(
[id] = 3
[name] = ********
[verified] = 1
[photo] = 1
[photoname] = *****_1370812455.jpg
)
)
[created] = 2013-06-15 16:53:00
)
)
)
)
希望这有助于其他人通过CakePHP的HABTM隧道......