CakePHP Выбрать запрос - PullRequest
       11

CakePHP Выбрать запрос

1 голос
/ 26 сентября 2011

Есть ли способ выбрать все поля из определенной таблицы в CakePHP? Так что-то вроде:

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

Я искал повсюду и ничего не могу найти по этому поводу. Я надеюсь, что мне не нужно будет печатать все поля для Model2: (

Прости меня за мою наглость, я только начал изучать торт. Большое спасибо заранее!

Ответы [ 3 ]

1 голос
/ 28 сентября 2011

Для некоторых драйверов подстановочный знак не будет работать должным образом.Таким образом, вам нужен весь список полей.

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

$this->Model1->find('first', array(
    'fields' => $ds->fields($this->Model1),
    'conditions' => 'Model1.id = Model2.Model1_id',
    'contain' => array()
));
1 голос
/ 26 сентября 2011

Ты не.Синтаксис, который у вас есть (имеется в виду часть Model2.*), будет работать, так как не будет определять поля вообще.По умолчанию все они возвращаются.

Я не знаю, будет ли работать вызов find, если он у вас есть.В лучшем случае кажется неудобным выполнять поиск в Model1 для получения данных из Model2.Как отметил Анри в своем комментарии, лучше сделать поиск по Model2.

0 голосов
/ 26 сентября 2011

вы можете попробовать это

$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'
  )

) );

...