CakePHP选择查询

时间:2011-09-26 13:59:59

标签: mysql cakephp cakephp-appmodel

有没有办法从CakePHP中的特定表中选择所有字段? 如下所示:

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

我一直在寻找这个地方,但却找不到任何相关的东西。 我有点希望我不必输入Model2的所有字段:(

原谅我的忠诚,我刚开始学习蛋糕。非常感谢提前!

3 个答案:

答案 0 :(得分:1)

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

但是,我不知道你所拥有的find电话是否有效。为了从Model1获取数据,在Model2上执行查找似乎很尴尬。正如Henri在评论中提到的那样,最好在Model2上进行查找。

答案 1 :(得分:1)

对于某些驱动程序,通配符将无法按预期工作。所以你需要整个字段列表。

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

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

答案 2 :(得分: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'
  )

) );