У меня есть стандартный запрос поиска в моей пользовательской модели, который выглядит следующим образом:
$user = $this->User->find( 'all', array( 'conditions' => array( 'User.id' => $user_id ) ) );
У меня также есть некоторые расширения, которые я хотел бы сделать в предложении where этого вызова функции, например:
$query_extension = 'AND users.id IN ( complex join between a few tables )';
Я хочу добавить это сложное предложение WHERE в конец этого условия поиска пользователя, но я не уверен, как это сделать. Я смотрю в класс ConnectionManager, но я все еще не уверен, как добавить этот дополнительный пункт:
http://api.cakephp.org/2.5/class-ConnectionManager.html#_getDataSource
Проверьте пример кода, который я использовал, вы также можете установить динамический контент, как joins
Будет иметь массив Что вы построили Или
будет иметь пустой массив.
$courseNames = $this->UsersCourse->Course->find('list',
array('fields'=> array('Course.course_name'),
'order'=> array('Course.course_name'),
'conditions'=>array('Course.is_active'=>1 ,
'CourseCategory.is_active'=>1
),
"joins" => array(
array(
"table" => "course_categories",
"alias" => "CourseCategory",
"type" => "INNER",
"conditions" => array(
"CourseCategory.id = Course.course_category_id")
)
)
)
);
Вот как эта операция может быть выполнена. Обратите внимание, что предложение, добавляемое к основному запросу, включает AND
Это означает, что он на самом деле является частью предложения where и может быть добавлен в виде строки для поиска следующим образом.
// Note here that including the $complex_subselect_string as an un-keyed term in the conditions automatically ANDs this extra query clause
$complete_user_list = $this->find( 'all', array( 'conditions' => array( $complex_subselect_string ), 'limit' => $limit, 'contain' => array() ) );