gpt4 book ai didi

php - cakePHP 2.0 发现 ('threaded' ) 问题

转载 作者:行者123 更新时间:2023-12-03 23:05:19 24 4
gpt4 key购买 nike

我正在我的 Jobs Controller 中运行以下命令。

$this->set('jobs', $this->Job->find('threaded', array('conditions' => array('Job.id' => 20))));

现在在我看来,我在我的 foreach 循环中正常显示 $jobs,但我的问题是我使用字段 parent_id 将 child 链接到 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

我想在父作业下显示子作业。嵌套注释究竟应该如何工作。任何帮助都会很棒。

最佳答案

查看 find('threaded') 生成的 SQL。您要求所有 ID 为 20 的工作(而不是工作 20 的所有子工作)

因为你有一个左和右字段,我假设你有附加的树行为。这意味着您可以使用 children()

$this->Job->id = 20;
$this->Job->children();

但是,这将为您提供平面数组,而不是嵌套数组。如果您需要嵌套数组,请在 find('threaded') 调用中使用 lft 和 right 列。

$parentJob = $this->Job->find('first', array(
'conditions' => array(
'Job.id' => 20
)
);

$children = $this->Job->find('first', array(
'conditions' => array(
'Job.lft BETWEEN ? AND ?' => array($parentJob['Job']['lft'], $parentJob['Job'])['rght']
)
);

当然你可以把它归结为一个查询,但我会把它留给“作为读者的练习”(我本来应该是教科书作者)

关于php - cakePHP 2.0 发现 ('threaded' ) 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8556591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com