1

CakePHPの特定のテーブルからすべてのフィールドを選択する方法はありますか?だから次のようなもの:

$this->Model1->find('first',
                    array('fields' => 'Model2.*',
                          'conditions' => 'Model1.id = Model2.Model1_id'),
                          'contain' => array());

私はあちこちを探していましたが、これについては何も見つかりません。Model2のすべてのフィールドを入力する必要がないことを願っています:(

私のしなやかさを許してください、私はちょうどケーキを学び始めました。よろしくお願いします!

4

3 に答える 3

1

あなたはそうしない。Model2.*フィールドをまったく定義しない場合と同様に、使用している構文(パーツを意味する)も機能します。デフォルトでは、それらはすべて返されます。

findしかし、あなたが持っている電話がうまくいくかどうかはわかりません。Model1からデータを取得するために検索を実行するのは、せいぜい厄介なようですModel2。アンリが彼のコメントで述べたように、で検索を行う方が良いですModel2

于 2011-09-26T14:26:34.323 に答える
1

一部のドライバーでは、ワイルドカードが期待どおりに機能しません。したがって、フィールドの全リストが必要です。

$ds = $this->Model1->getDataSource();

$this->Model1->find('first', array(
    'fields' => $ds->fields($this->Model1),
    'conditions' => 'Model1.id = Model2.Model1_id',
    'contain' => array()
));
于 2011-09-28T09:01:38.620 に答える
0

あなたはこれを試すことができます

$this->Model1->find('first',
array(
  'fields'=>'Model2.*',

  'joins' => array(
      array(
        'table'=>'table',
        'alias'=>'Model2',
        //'type'=>'LEFT',
        'conditions'=>array(
          "Model2.model1_id = Model1.id",          
        ),
      ),
  ),

  'conditions' => array('Model1.somefields' =>'1'
  )

));

于 2011-09-26T14:46:24.913 に答える