2017-04-13 22 views
0

私は1つのフィールド答えがあります。また、私は2つのID、すなわち男性と女性のidフィールドの名前が別のテーブルにca_field_idとなっています。cakephpの別の条件の中での条件の使い方

私の要件は、私は、IDSの男性(ID = 37)と女性(ID = 38)

  • 女性の男性の67
  • 歳の年齢の両方で、以下の条件

    1. でデータを取得したいです65

    しかし、67歳の男性と67歳の女性の両方のデータを取得しています。逆も同様です。クエリ以下で

    $numberofemployeesmen = 37; 
    $numberofemployeeswomen =38; 
    
    $caanswer = $this->CaAnswer->find('all', 
        array(
         'conditions' => array(
          'CaAnswer.ca_field_id' => array($numberofemployeesmen,$numberofemployeeswomen), 
          'CaAnswer.answer' => array(67,65) 
         ) 
        ) 
    ); 
    

    はまた、私は次のように試みたが、

    $numberofemployeesmen = 37; 
    $numberofemployeeswomen =38; 
    
    $caanswer = $this->CaAnswer->find('all', 
        array('conditions' => array(
         'CaAnswer.ca_field_id' => array($numberofemployeesmen,$numberofemployeeswomen), 
         'CaAnswer.answer'=> array(
          67 AND array('CaAnswer.ca_field_id' =>$numberofemployeesmen), 
          65 AND array('CaAnswer.ca_field_id'=>$numberofemployeeswomen)) 
         ) 
        ) 
    ); 
    

    を動作しませんでした

  • +0

    コードを4つのスペースでインデントするか、またはCtrl + Kを押してコードをインデントしてください。インラインコードは、次のようにマークする必要があります: '\' code \ ''ありがとう。 – Soaku

    +0

    どのフィールドに年齢が格納されていますか? –

    答えて

    0

    あなたは

    を試してみました...私はこの問題を解決する方法を教えてください
    $caanswer = $this->CaAnswer->find('all', 
        array('conditions' => array(
         'CaAnswer.ca_field_id' => array($numberofemployeesmen,$numberofemployeeswomen), 
         'CaAnswer.answer'=> array(
          67 AND array('CaAnswer.ca_field_id' =>0), 
          65 AND array('CaAnswer.ca_field_id'=>1)) 
         ) 
        ) 
    ); 
    

    私が間違え配列($ numberofemployeesmen、$ numberofemployeeswomen)ないです、これは0 => $ numberofemployeesmen 1 => $ numberofemployeeswomen

    1

    はこれを試してみてくださいのような配列を作成する場合:

    $numberofemployeesmen = 37; 
    $numberofemployeeswomen = 38; 
    
    $caanswer = $this->CaAnswer->find('all', 
        [ 
         'conditions' => [ 
          'OR' => [ 
           [ 
            'CaAnswer.ca_field_id' => $numberofemployeesmen, 
            'CaAnswer.answer' => 67 
           ], 
           [ 
            'CaAnswer.ca_field_id' => $numberofemployeeswomen, 
            'CaAnswer.answer' => 65 
           ], 
          ] 
         ] 
        ] 
    ); 
    

    は、問題が解決しない場合は、あなたはOR以内に追加ANDキーを追加する必要があるかもしれません:

    $caanswer = $this->CaAnswer->find('all', 
        [ 
         'conditions' => [ 
          'OR' => [ 
           [ 
            'AND' => [ 
             'CaAnswer.ca_field_id' => $numberofemployeesmen, 
             'CaAnswer.answer' => 67 
            ], 
           ], 
           [ 
            'AND' => [ 
             'CaAnswer.ca_field_id' => $numberofemployeeswomen, 
             'CaAnswer.answer' => 65 
            ], 
           ], 
          ] 
         ] 
        ] 
    ); 
    

    この1でお知らせ、ANDは、独自の配列内にあるので、第二ANDキーは最初のキーを上書きしません。

    私は、この最初のAND条件セットまたは2番目のAND条件セットが必要だと言っています。しかし、それぞれの中で、両方の条件が満たされる必要があります。

    これは正確ではないかもしれませんが、これはどのようにして行うことができるかを示します。 (ちょうど私の頭の上から出て行く)。