我对CakePHP比较新,我对文档做的很好,但我一直在试图找出解决这个问题几个星期的方法,我似乎没有找到解决方案,我相信它很容易,甚至可以automagically可行,但我只是不知道如何找到它(也许我不知道这些东西的行话)CakePHP 3级深层模型协会
我的模型结构是像这:
...等等与用户,城市,国家和运输模型。
我想要实现的是在搜索Trip
时获取整棵树的所有信息。
<?php
class TripController extends AppController {
function index() {
debug($this->Trip->find('first'));
}
}
输出
Array
(
[Trip] => Array
(
[id] => 6
[created] => 2010-05-04 00:23:59
[user_id] => 4
[start_id] => 2
[end_id] => 1
[title] => My trip
[transport_id] => 1
)
[User] => Array
(
[id] => 4
[name] => John Doe
[email] => [email protected]
)
[Start] => Array
(
[id] => 2
[user_id] => 4
[country_id] => 1
[state_id] => 1
[city_id] => 1
[direccion] => Lincoln Street
)
[End] => Array
(
[id] => 1
[user_id] => 4
[country_id] => 1
[state_id] => 1
[city_id] => 4
[address] => Fifth Avenue
)
[Transport] => Array
(
[id] => 1
[name] => car
)
)
这里有一个问题: 如何在一个查询趴下树上所有的信息?
我想有像
Array
(
[Trip] => Array
(
[id] => 6
[created] => 2010-05-04 00:23:59
[User] => Array
(
[id] => 4
[name] => John Doe
[email] => [email protected]
)
[Start] => Array
(
[id] => 2
[user_id] => 4
[Country] => Array
(
[id] => 1
[name] = Spain
)
[State] => Array
(
[id] => 1
[name] = Barcelona
)
[City] => Array
(
[id] => 1
[name] = La Floresta
)
[address] => Lincoln Street
)
[End] => (same as Start)
[title] => My trip
[Transport] => Array
(
[id] => 1
[name] => car
)
)
)
灿CakePHP中创建此类型的数据? 不仅为$this->Model->find()
也为$this->paginate()
,例如:
// filter by start
if(isset($this->passedArgs['start'])) {
//debug('isset '.$this->passedArgs['start']);
$start = $this->passedArgs['start'];
$this->paginate['conditions'][] = array(
'OR' => array(
'Start.address LIKE' => "%$start%",
'Start.State.name LIKE' => "%$start%",
'Start.City.name LIKE' => "%$start%",
'Start.Country.name LIKE' => "%$start%"
)
);
$this->data['Search']['start'] = $start;
}
这似乎是一个粗略的问题,但我相信这是广泛进行和记录,我会很感激的任何帮助。
或'$ this-> Trip-> find('first',array('recursive'=> 2));' – bancer 2010-06-03 16:15:08
简单漂亮。感谢milion paullb和bancer! – 2010-06-04 09:47:40
这看起来可能很棒,但是 - 有很多关联,我不能使用递归2而不会出现内存错误 - 即使我将其限制为一个结果(如'first')。有任何想法吗? – Dave 2011-06-16 16:16:33