gpt4 book ai didi

database - Zend 2 Framework 中的多对多关系

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:39 24 4
gpt4 key购买 nike

我使用 Zend 2 Framework 来构建我的 Web 应用程序。我通过本教程实现了我的数据库表模型:http://framework.zend.com/manual/2.1/en/user-guide/database-and-models.html

我的数据库中的两个模型之间存在多对多关系。为了从他们那里获取数据,我用谷歌搜索并找到了这个链接:http://mattmccormick.ca/2010/04/24/how-to-easily-create-models-and-table-relationships-in-zend-framework/

问题是示例中所有的表模型都是从 Zend_Db_Table_Abstract 扩展而来的。我不知道如何从模型中获取数据。

我有一个包含投票的表,每个投票都有一个唯一的哈希 ID。每个投票也有标签。因此,我定义了一个包含所有可用标签的 tags 表和一个映射了所有多对多关系的 voting_tag_map

到目前为止,我尝试的是以下内容,这是我的 VotingTable 类中的代码:

public function getTagsByVoting($votingHash){
$select = $this->tableGateway->getSql()->select();
$select->from(array('v' => 'voting'))
->join('voting_tag_map', 'v.voting_id=voting_tag_map.voting_id')
->join('tags', 'voting_tag_map.tag_id=tags.tag_id');
$resultSet = $this->tableGateway->selectWith($select);
return $resultSet;
}

然后它说:

Since this object was created with a table and/or schema in the constructor, it is read only.

那是因为 from() 方法。如果我删除 from() 方法,它会显示:

Statement could not be executed

谁能帮帮我?

最佳答案

Since this object was created with a table and/or schema in the constructor, it is read only.

此错误是因为您试图在 from 子句中设置表名,但它已经在 TableGateway 的构造函数中设置,并且一旦设置就无法更改。

如果你真的需要这样做,那么你可以自己扩展 AbstractTableGateway 然后你不必向构造函数添加字符串表名,但你真的不需要在你的主表上使用别名...

当您注释掉 from() 方法时出现的 SQL 错误将是由于您在连接中引用了投票表,因为它是别名“v”,当您不使用别名 v 时,请尝试将其更改为 ' voting.XXX' 来自 'v.XXX'

关于database - Zend 2 Framework 中的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15876755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com