我在使用学说选择数据子集时遇到了麻烦。
我有3张桌子
地点 联系 Contact_location
联系人和位置表包含名称和ID,另一个表只包含ID。例如:
Location
loc_id: 1
name: detroit
Contact
contact_id: 1
name: Mike
Contact_location
loc_id: 1
contact_id: 1
在学说中,位置和联系人表之间存在多对多关系,其中contact_location为ref_class。
我想要做的是在我的位置页面上我想找到所有联系人,例如loc_id = 1。
我试过了:
$this->installedbases = Doctrine::getTable('contact')->findByloc_id(1);
希望教义会看到这种关系并得到它,但事实并非如此。
如何在相关的相关表格中进行学说搜索?我读过它可以使用Findby完成,但我发现文档不清楚。
答案 0 :(得分:7)
将findByloc_id()
更改为findByLocId()
。该方法由魔法__call()
捕获。
答案 1 :(得分:2)
在表类上添加一个方法:
class ContactTable extends Doctrine_Table
{
public function findByLocationId($id)
{
return self::createQuery("c")
->innerJoin("c.Location l")
->where("l.loc_id = ?", $id)
->execute();
}
}
然后按如下方式调用它:
$loc_id = 1;
$result = Doctrine::getTable("Contact")->findByLocationId($loc_id);
Doctrine应该使用refclass为你执行内连接。