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

标签 php cakephp

我正在我的 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/

相关文章:

php - 您如何在 PHP/MySQL 应用程序中充分利用多核 CPU?

html - 尝试设置图像/div 样式时,CSS 选择器在 CakePHP 中不起作用

php - CakePHP 友好的 seo url

Cakephp - HABTM 记录不会删除唯一设置为 true 的情况

cakephp - 使用 CakePHP 和 Bootstrap 形成复选框和标签

php - Security::hash() 不返回相同的哈希值

php - $wpdb->prepare placeholders %d %s ,工作,但我不相信我已经做得最好了

PHP + MySql + 存储过程,如何访问 "out"值?

php - 从 Mailgun 表单 Post PHP 中检索附件

php - 在 symfony 中哪里存储用户可编辑的配置参数?