我对cakephp中的搜索过滤器有疑问。没有使我的问题复杂化,下面是我想要的结构......
1)我有一个项目表。
2)另一个是project_funder_names
表,它与projects
表相关联。 project_id
位于project_funder_names
表中。我已经制作了project_funder_names
表,因为我需要一个项目的多个出资者名称,这就是为什么我制作了这个表。
3)现在主要的一点是我想要如果我在搜索过滤器中搜索多个资助者,这是带有复选框的下拉列表,我将根据这些值获得项目详细信息。怎么会发生。
这是我的cakephp找到所有查询....
$project_info = $this->Project->find('all', array(
'conditions' =>
array(
'Project.status' => 1,
'OR' => array($search)),
'fields' => array('id', 'title', 'short_description', 'budget_allocation', 'currency', 'total_comments', 'published_date'),
'contain' => array(
'ProjectFunderName' => array(
'conditions' => array($search_funder)),
'Currency' => array('currency_symbol'),
'ProjectBookmark' => array('project_id', 'user_id')
)
)
);
问题出在$search_funder
。
请帮帮我...谢谢。
答案 0 :(得分:1)
看起来您需要根据相关模型搜索结果。使用可包含行为的一个缺点是,如果您尝试将条件分配给关联模型,则无论如何都将检索主模型。
如果您想要根据相关模型的条件检索主记录和相关记录,我建议您使用join。
$joins = array(
array('table' => 'project_funder_names',
'alias' => 'ProjectFunderName',
'type' => 'LEFT',
'conditions' => array('ProjectFunderName.project_id = Project.id')
),
array('table' => 'currencies',
'alias' => 'Currency',
'type' => 'LEFT',
// It's unclear how currencies is associated with the other tables. Use appropriate table join condition here
),
array('table' => 'project_bookmarks',
'alias' => 'ProjectBookmark',
'type' => 'LEFT',
'conditions' => array('ProjectBookmark.project_id = Project.id')
)
)
);
$project_info = $this->Project->find('all',
array(
"joins" => $joins,
"fields" => array(.........) // Specify all your desired fields here
"conditions" => array(....) // Specify all conditions for Project, ProjectFunderName models.
)
);
希望这有帮助。
和平!的xD