我正在我的作业控制器中运行以下命令。
$this->set('jobs', $this->Job->find('threaded', array('conditions' => array('Job.id' => 20))));
现在,在我的视图中,我在foreach
循环中显示$jobs
很好,但我的问题是我使用字段parent_id将子项链接到Job.id。我知道链接工作正常,因为我可以看到数组中的子项。
Array
(
[0] => Array
(
[Job] => Array
(
[id] => 20
[parent_id] => 0
[rght] => 2
[lft] => 1
[client_id] => tasd
[contact] => asdf
[email] => sdf
[address] =>
[lat] =>
[long] =>
[user_id] => 1
[request_type_id] => Electrical
[date_start] => 0000-00-00 00:00:00
[date_end] => 0000-00-00 00:00:00
[date_complete] => 0000-00-00 00:00:00
[date_closed] => 0000-00-00 00:00:00
[status] => completed
[brief_desc] => aasdf
[desc] => asdfasdf
[cost_est] => 3434.00
[cost_actual] =>
[created] => 2011-12-18 20:39:24
[modified] => 2011-12-18 20:39:24
)
[Children] => Array
(
[0] => Array
(
[id] => 21
[parent_id] => 20
我想在父作业下显示子作业。嵌套注解应该如何工作。任何帮助都是很好的。
4条答案
按热度按时间nkhmeac61#
查看
find('threaded')
生成的SQL。您请求的是ID为20的所有作业(而不是作为作业20的子作业的所有作业)既然你有一个左和右字段,我假设你有附加的树行为。这意味着你可以使用
children()
。如果你需要一个嵌套的数组,那么就在
find('threaded')
调用中使用lft和rght列。当然,你可以把它归结为一个查询,但我会把它留给“读者作为练习”(我应该是一个教科书作者)
6pp0gazn2#
如果任何人想在cakephp视图中显示find('threaded ')结果,他们可以使用以下代码:
控制器代码:
$params = array('recursive' => -1,'fields' => 'Category.id, Category.name, Category.parent_id'); $categories = $this->Category->find('threaded',$params);
并在如下视图中显示线程化结果:
我不知道这是正确的方式来显示结果或没有,但它的工作很好。希望它的帮助有人:)我是新的cakephp和学习的基础知识。如果发现任何错误,请原谅我。
dtcbnfnu3#
请阅读以下链接
http://bakery.cakephp.org/articles/MrRio/2006/09/24/threaded-lists
chhqkbe14#
我知道这是旧的,但我今天试图弄清楚这一点,并能够使它的工作(有点奇怪)与以下:
希望这能为某人节省一些时间...