1

今、私が得た唯一の正しい出力の間隔を空けました。その番号はstep_idですが、すべてのIDを取得することはできません。私が言ったように、ステップテーブルのuser_idが正しいタイプのIDである場合、デバッグが画面にすべてのstep_idを出力/エコーすることを望んでいました。

以下のデバッグ出力:

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

1323

Notice (8): Undefined offset: 1 [APP/controllers/steps_controller.php, line 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」がありましたが、find コマンドがとにかく Step テーブルを指していたので、変更しました! しかし、それでも機能しません。

以下の新しいコードは、ほぼ同じコードです。ステップ テーブル内のユーザー ID が、適切なロール (>3 など) のみのユーザー ID と一致する場合、デバッグ コマンドを使用してすべてのステップ ID を出力しました。ただし、デバッグで返される結果は 1 つだけです。そして、「未定義のオフセット:」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 の番号付き配列しか得られません。テーマの情報はすべて正しいですが、ユーザー グループによって 3 つ以上の手順が実行されていることはわかっています。

次に、$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の場合のみです」

コードサンプルは次のとおりです。

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 に答える
0

user_id が 3 より大きいすべてのステップを取得するには、条件に ">" を含めることができます。

$getSteps = $this->Step->find('all', array('conditions' => array('Step.user_id >' => 3));
于 2012-07-18T18:47:21.410 に答える