1

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

调试输出如下:

app/controllers/steps_controller.php (line 109)

1323

Notice (8): Undefined offset: 1 [APP/controllers/steps_controller.php, line 109]app/controllers/steps_controller.php (line 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',然后 find 命令无论如何都指向 Step 表,所以我改变了它!但它仍然不起作用。

有了下面的新代码,它或多或少是相同的代码。当步骤表中的用户 ID 与仅具有正确角色的用户 ID 匹配时,我使用调试命令打印所有步骤 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 命令不太擅长 let。现在,就目前而言,如果我调试 $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
4

3 回答 3

0

您可以在条件中包含“>”以获取 user_id 大于 3 的所有步骤:

$getSteps = $this->Step->find('all', array('conditions' => array('Step.user_id >' => 3));
于 2012-07-18T18:47:21.410 回答
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 循环。请询问它是否不适合您。

于 2012-07-19T09:02:37.373 回答
0

没关系,

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

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

非常感谢你们在这方面给我的所有帮助和支持!

格伦·柯蒂斯。

于 2012-07-19T10:16:55.203 回答