1

こんにちは、私は変な立場で立ち往生しています。

列のあるテーブルがあります。id_acces、id_user、id_menu、has_access (ブール値)

基本的に、特定のユーザーがページの一部にアクセスできるようにするためのチェックボックスと ID 番号のリストを含むフォームがあります。基本的に、アクセス権があるかどうか、およびテーブルに新しいエントリを作成するために選択されたページに関するユーザーのエントリがない場合は、テーブルを更新する必要があります。したがって、私の配列は次のようになります

     Array
       (
        [AdminMenu] => Array
          (
            [id_user] => 1
            [id_menu] => Array
            (
                [4] => enabled
                [21] => enabled
                [22] => enabled
                [23] => enabled
                [24] => enabled
                [1] => enabled
                [5] => enabled
                [25] => enabled
                [26] => enabled
                [6] => enabled
                [7] => enabled
                [29] => enabled
                [8] => enabled
                [30] => enabled
                [31] => enabled
                [32] => enabled
                [33] => enabled
                [34] => enabled
                [35] => enabled
                [36] => enabled
                [37] => enabled
                [38] => enabled
                [39] => enabled
                [40] => enabled
                [41] => enabled
                [60] => enabled
                [2] => enabled
                [10] => enabled
                [11] => enabled
                [12] => enabled
                [13] => enabled
                [14] => enabled
                [15] => enabled
                [16] => enabled
                [17] => enabled
                [18] => enabled
                [9] => enabled
                [3] => enabled
                [19] => enabled
                [20] => enabled
            )

           )

    )

キーはid_menuで、値はチェックボックスがチェックされているかどうかだけです。

この配列を使用して、ケーキのphpでテーブルに挿入または更新する方法を教えてください。現在、配列を $key=>$value としてループし、キーが存在するようにテーブルに対してクエリを実行しています。存在する場合は、更新クエリを実行する必要があります。そうでない場合は、その特定のページまたは id_menu に対して挿入クエリを実行する必要があります。助けてください

    foreach($this->data['AdminMenu']['id_menu'] as $key=>$value) {
          $check = select against the table where the id_menu = $key
       if($key = $check[0]['AdminAccess']['id_menu']) {
             $this->AdminAcess->id_menu=$key;
     $this->AdminAccess->id_user=$user_id;
     $this->AdminAccess->set('has_access', 't');
     $this->AdminAccess->save();
        } else {
           $this->AdminAcess->id_menu=$key;
    $this->AdminAccess->id_user=$user_id;
    $this->AdminAccess->saveField('has_access', 'false');

         }

    }

このループよりも簡単な方法があるはずです。また、挿入または更新を行うにはどうすればよいですか。これはどちらの方法でも挿入または更新を行っていません

4

1 に答える 1

0

これはhasAndBelongsToManyの関係です。Cake Bookのこのセクションを読み、フォームコードを適応させて提案に従う必要があります。

http://book.cakephp.org/2.0/en/models/saving-your-data.html#saving-habtm

于 2012-12-20T04:04:36.433 に答える