学说通过关系发现

发布于 2024-09-02 10:33:57 字数 567 浏览 3 评论 0原文

我在选择带有学说的数据子集时遇到问题。

我有 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 完成,但我发现文档不清楚。

I'm having trouble selecting a subset of data with doctrine.

I have 3 tables

Location
Contact
Contact_location

The contact and location tables hold a name and an id the other table holds only ID's. For instance:

Location
 loc_id: 1
 name: detroit
Contact
 contact_id: 1
 name: Mike
Contact_location
 loc_id: 1
 contact_id: 1

In doctrine there is a many to many relation between the location and contact tables with contact_location as the ref_class.

What i want to do is on my location page i want to find all contacts where for instance the loc_id = 1.

I tried:

 $this->installedbases = Doctrine::getTable('contact')->findByloc_id(1);

hoping doctrine would see the relation and get it, but it does not.

How can i make doctrine search in relevant related tables? I read it can be done using Findby but i find the documentation unclear.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦断已成空 2024-09-09 10:33:57

findByloc_id() 更改为 findByLocId()。该方法被魔法 __call() 捕获。

Change findByloc_id() to findByLocId(). The method is caught by magic __call().

记忆之渊 2024-09-09 10:33:57

在表类上添加一个方法:

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 为您执行内部联接。

Add a method on your table class:

class ContactTable extends Doctrine_Table
{
  public function findByLocationId($id)
  {
    return self::createQuery("c")
      ->innerJoin("c.Location l")
      ->where("l.loc_id = ?", $id)
      ->execute();
  }
}

then call it as follows:

$loc_id = 1;
$result = Doctrine::getTable("Contact")->findByLocationId($loc_id);

Doctrine should use the refclass to perform the inner join for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文