我的用户模型上有一个标准的查询查询,如下所示:
$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
答案 0 :(得分:1)
检查我使用的示例代码,您还可以设置动态内容,如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"
)
)
)
)
);
答案 1 :(得分:0)
这就是如何执行此操作。请注意,添加到主查询的子句包含AND
这意味着它实际上是where子句的一部分,可以作为字符串添加到find中,如下所示。
// 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() ) );