我有以下代码,从我在相关模型(HABTM)上执行查找条件时发出错误:
class Users extends Model{
public $useTable = 'users';
public $hasAndBelongsToMany = array(
'UserCategories' => array(
'className' => 'UserCategories',
'joinTable' => 'user_categories_link',
'foreignKey' => 'user_id',
'associationForeignKey' => 'category_id',
'unique' => false,
)
);
public function getData($page = 0, $category = '', $subcategory = ''){
return $this->find('all', array(
'limit' => 6,
'page' => $page,
'conditions'=> array(
'active'=> 1,
'UserCategories.category_name' => $category, // THIS GIVES ERROR
'UserCategories.category_subcategory' => $subcategory, // THIS GIVES ERROR
)
));
}
在我的控制器中:
$this->Users->getData(0, 'somemaincategory', 'somesubcategory');
我似乎无法对相关的HABTM模型(在这种情况下为UserCategories)做条件。我也尝试使用'contains'(使用$ actsAs),但是即使没有与之链接的类别,他仍然会向我提供所有用户数据。在这种情况下,Category数组只是空白。
希望有人可以帮助我。 提前谢谢,
亚伦
答案 0 :(得分:2)
进行手动加入。您可以使用它来进行实际的内连接(包含将充当左连接)。 http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#joining-tables
$this->find('all',
array(
'conditions' => array(
'active' => 1,
),
'joins' => array(
array(
'table' => 'user_categories_link',
'alias' => 'UserCategoriesLink',
'type' => 'inner',
'conditions' => array(
'UserCategoriesLink.user_id = User.id'
),
),
array(
'table' => 'user_categories',
'alias' => 'UserCategories',
'type' => 'inner',
'conditions' => array(
'UserCategories.id = UserCategoriesLink.category_id',
'UserCategories.category_name' => $category,
'UserCategories.category_subcategory' => $subcategory,
),
)
),
)
);