我怎样才能在cakephp中实现这一点

时间:2009-03-02 12:22:45

标签: php cakephp

  

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

请帮我在cakephp中实现这个

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;

2 个答案:

答案 0 :(得分:1)

我不确定您正在努力解决的具体问题,但您可以通过将连接条件与选择条件分开来使查询更清晰:

select s.name
from safari s 
inner join regions_safaris sr on(s.id=sr.safari_id)
inner join region r on(sr.region_id=r.id)
where r.name='yourRegion' 
and s.duration=5;

你的查询也错误地使用了safaris_regions而不是regions_safaris,并且对区域表进行了两次别名。

答案 1 :(得分:1)

您应该将区域表更改为区域,并将safari表更改为safari以使其与cakephp一起使用。在模型中设置关系后,您将使用查找。

//safaries_controller.php 
$this->Safari->find('all', array('fields'=>'Safari.name', 'conditions'=>array('Region.name'=>'yourRegion'));