2012-03-25 3 views
2

У меня есть несколько моделей, которые делят одни поля (например, имя), но отличаются в других полях. Есть ли какой-либо wan, чтобы найти все ModelX ModelY и ModelZ, которые имеют имя «foo». Спасибо за любые предложения.CakePHP: Поиск по нескольким моделям

+2

Если у вас есть поле, которое является репликацией данных из другой таблицы, которая не является простым идентификатором, вы, вероятно, ошибаетесь. –

ответ

3

Что-то вроде этого?

$models = array('Post', 'Comment', 'Article'); 
$results = array(); 

foreach($models as $model) { 
    $this->loadModel($model); 
    $results[$model] = $this->{$model}->find('all', array(
     'conditions' => array(
      $model'.name' => $name 
     ) 
    )); 
} 
2

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

$this->find('all', array(
     'conditions' => array(
      'OR' => array(
        'Article.field' => 'foo', 
        'Comment.field' => 'foo', 
        'Post.field' => 'foo', 
      ) 
     ), 
     'fields' => array('Article.field', 'Comment.field', 'Post.field') 
    ));