1

有没有办法从 CakePHP 的特定表中选择所有字段?所以像:

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

我一直在到处寻找,找不到任何东西。我有点希望我不必输入 Model2 的所有字段:(

原谅我的粗心,我刚开始学Cake。提前谢谢了!

4

3 回答 3

1

你没有。您拥有的语法(即Model2.*部分)将起作用,根本不定义任何字段。默认情况下,它们都被返回。

不过,我不知道您的find电话是否会起作用。Model1执行 find以从中获取数据似乎很尴尬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 回答