CakePHP Foreach查找循环问题

时间:2012-07-18 15:04:00

标签: cakephp loops

现在,我有一个唯一正确的输出,这个数字是一个step_id,但它没有给我所有的ID。就像我说的那样,我希望当我的步骤表中的user_id是正确的id类型时,调试会在屏幕上打印/回显所有step_id。

以下调试输出:

app / controllers / steps_controller.php(第109行)

1323

注意(8):未定义的偏移量:1 [APP / controllers / steps_controller.php,第109行] app / controllers / steps_controller.php(第109行)

注意(8):未定义的偏移量:2 [APP / controllers / steps_controller.php,第109行] app / controllers / steps_controller.php(第109行)

注意(8):未定义的偏移量:3 [APP / controllers / steps_controller.php,第109行] app / controllers / steps_controller.php(第109行)

注意(8):未定义的偏移量:4 [APP / controllers / steps_controller.php,第109行] app / controllers / steps_controller.php(第109行)

注意(8):未定义的偏移量:5 [APP / controllers / steps_controller.php,第109行] app / controllers / steps_controller.php(第109行)

注意(8):未定义的偏移量:6 [APP / controllers / steps_controller.php,第109行] app / controllers / steps_controller.php(第109行)

注意(8):未定义的偏移量:7 [APP / controllers / steps_controller.php,第109行] app / controllers / steps_controller.php(第109行)

注意(8):未定义的偏移量:8 [APP / controllers / steps_controller.php,第109行] app / controllers / steps_controller.php(第109行)

更新:

我不确定这是不是错误,但在我的foreach循环中我有'Step.user_id',然后当命令指向Step表时,我改变了它!但它仍然无效。

使用下面的新代码,或多或少相同的代码。当步骤表中的用户ID与仅具有正确角色的用户ID匹配时,我使用了debug命令来打印所有步骤ID。 →3。但是调试只给我一个返回的结果!然后'未定义的偏移:'1到8。

我做错了什么想法?请??

        foreach($getUserIds as $k=>$data) {
            //$StepConditions = ;

            $getStepIds = $this->Step->find('all', array('conditions' => array('user_id' => $getUserIds[$k]['User']['id'])));

            debug($getStepIds[$k]['Step']['id']);

        }

我在这里搜索过,但我似乎找不到任何关于此问题的人,所以我希望你能帮忙!

好的,我的功能的主要目的是从我的数据库中获取所有“步骤”,但仅当user_id为> 3.

我是CakePHP的新手,所以我对这些find命令不太满意。现在,就目前而言,如果我调试$ getSteps,它只给我0,1& 2个编号的数组。主题中的所有信息都是正确的,但我知道用户组完成了三个以上的步骤。

然后我调试,$ getUserIds,它给了我想要的所有用户ID但不是我所有这些用户完成的所有步骤,只是我说的三个。

欢迎任何希望!

非常感谢格伦

function Breakdown($id = null) {
    $getUserIds = $this->Step->User->find(
        'all',
        array(
            'conditions' => array('role_id' => 2)
             )
        );

    foreach ($getUserIds as $k=>$data) {

        $getSteps = $this->Step->find(
                'all', 
                array(
                      'conditions' => array('Step.user_id' => $getUserIds[$k]['User']['id'])
                     ) 
        );
        debug($getSteps);

    }

die();
} //End of Breakdown() function

3 个答案:

答案 0 :(得分:0)

您可以添加">"在你的条件下获得user_id大于3的所有步骤:

$getSteps = $this->Step->find('all', array('conditions' => array('Step.user_id >' => 3));

答案 1 :(得分:0)

正如你在问题中所说的那样:“我的功能的主要目的是从我的数据库中获取所有'步骤',但仅当user_id为> 3时

以下是代码示例:

function Breakdown($id = null) {
    $this->User->bindModel(array(
                                 'hasMany' => array( 
                                                    'Step' => array( 
                                                                    'className' => 'Step',
                                                                    'foreignKey' => 'user_id'
                                                                   )
                                                   )
                                 )
                           ); //dynamically bind model
    $userWithSteps = $this->User->find('all', array('conditions' => array('User.role_id' => 2)));

    }
pr(userWithSteps );
die();
} //End of artistsBreakdown() function

完成了。您不需要使用foreach循环。请问它是否对你不起作用。

答案 2 :(得分:0)

没关系,

我已经解决了我的问题!我认为用户被分配到每个步骤,但它们只被分配给项目,因此它不起作用。

我要做的是创建一个新表并为每个用户构建指向每个步骤的链接。

许多人非常感谢所有人给予我的帮助和支持!

Glenn Curtis。