我如何找到以下数据

时间:2009-03-02 11:04:58

标签: php cakephp

  

可能重复:
  How do I query a table based with HABTM relationship while providing additional conditions in CakePHP?

我,我使用两个表(区域和旅行)有很多关系。这些表由另一个名为regions_safaris的表连接(带有字段 - region_id $ safari-id)。我想获取满足给定标准的所有狩猎,例如5天的持续时间和给定的区域。 这应该在cakephp中实现

2 个答案:

答案 0 :(得分:1)

这似乎更像是数据库问题而不是php问题。这里是语法(对于大多数数据库,例如MySQL)获取映射到'yourRegion'区域的所有5天safary的列表

table safari:
id
name
duration

table region:
id
name

table regions_safaris:
safari_id
region_id

select s.name
from region r, safaris_regions sr, region r, safari s
where r.name='yourRegion'
and sr.region_id=r.id and s.id=sr.safari_id and s.duration=5;

答案 1 :(得分:1)

假设您的模型正确关联。这些是我在类似情况下使用的代码行。在habtm条件下进行过滤时,我发现从具有最严格过滤器的模型开始(或者以最快的速度向下钻取数据库的模型)是有帮助的。在这种情况下,该地区。

来自Safaris控制器:

$conditions = array('conditions' => array('Region.id' => 'yourRegion', 'Safari.duration' => 5);
$this->Safari->Region->recursive = 1;
$safaris = $this->Safari->Region->find('all', $conditions);

然后你应该能够print_r($ safaris)并通过嵌套区域数组访问每个safari。即:

$safaris['Region'][0]['Safari'][0]['name']

这应该为您提供与标准匹配的第一个返回区域首次关联的safari。 print_r($ safaris)为了更好地了解数据结构,你会明白我的意思。