如何在cakephp中实现这一点

如何在cakephp中实现这一点,php,cakephp,Php,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.

可能重复:

请帮我用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;

我不确定您具体在做什么,但您可以通过将连接条件与选择条件分离,使查询更清晰:

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\u regions而不是regions\u safaris的错误,并且对regions表使用了两次别名。

您应该将region表更改为regions,将safari表更改为safaries,以使其与cakephp一起工作。在模型中设置关系后,将使用find

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

您需要更具体地说明您在哪里挣扎。另外,在查询中,区域表的别名是r的两倍