2014-10-01 4 views
0

Я пытаюсь сделать действие поиска litle для одной из моих моделей. My Model Salarie был связан с некоторыми другими моделями, в частности:CakePhp: Найти/Paginate с условиями на «hasMany» assiociated models

  • Salarie -> hasMany ->Permission
  • Salarie -> hasOne ->Carburant

Так я пытаюсь сделать находку() на моей модели Salarie, чтобы выбрать записи, соответствующие ключевому слову. Это ключевое слово может быть найдено в моей модели Salarie, или в соответствующей модели Permission, Carburant.

Вот моя фактическая находка():

$salaries = $this->Salarie->find('all',array(
     'contain' => array(
      'User','Agence','Entitee','Fonction','Contact','Ligne','Car','CallingCard','Badge','Carburant','Permission'), 
     'conditions'=>array(
      'OR'=>array(
       'Salarie.nom LIKE' => '%'.$keyWord.'%', 
       'Salarie.prenom LIKE' => '%'.$keyWord.'%', 
       'Salarie.secu LIKE' => '%'.$keyWord.'%', 
       'Salarie.tel LIKE' => '%'.$keyWord.'%', 
       'Salarie.mobile LIKE' => '%'.$keyWord.'%', 
       'Salarie.ville LIKE' => '%'.$keyWord.'%', 
       'Salarie.email LIKE' => '%'.$keyWord.'%', 
       'Carburant.numero LIKE' => '%'.$keyWord.'%', 
      ) 
     ) 
    )); 

Этот код работает, но не смотрит в Permission таблицы/модели, если я добавить эту строку 'Permission.login LIKE' => '%'.$keyWord.'%', в моих условиях массива я получил ошибку

Column not found: 1054 Unknown column 'Permission.login' in 'where clause'

Я стараюсь с contain, но это не то, что я искал, contain фильтры DATAS в результатах работы find.

если у кого-то есть советы?

+0

Проверьте свои ассоциации с «Разрешением» в модели «Salarie». Поскольку, похоже, действуют другие ассоциации, может возникнуть проблема с декларацией «Разрешение». – ylerjen

+0

Я проверил свои ассоциации, но только добавляет ссылку hasMany. –

ответ

0

SQL-соединения выполняются только с помощью hasOne и принадлежат ассоциациям, а не hasMany и HABTM. Вы можете использовать плагин Linkable для фильтрации записей на основе условий для hasMany-ассоциаций.

+0

Хорошо, я посмотрю эту ночь. –

+0

Итак, я взглянул на Linkable, но никаких документов и четких примеров не предусмотрено. Поэтому я не вижу способа использовать его в своем коде. –

+0

Ну, у readme есть примеры использования плюс [тесты] (https://github.com/lorenzo/linkable/blob/master/Test/Case/Model/Behavior/LinkableBehaviorTest.php), которые показывают различные способы использования. – ADmad

0

Я нашел что-то, что решает мою проблему.

Если бы у меня был этот код для моего поиска, SQL-запрос отлично работает. Мне нужно только GROUP BY, чтобы избежать двойного результата.

Смежные вопросы