首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成的propel基类中的重复字段

生成的propel基类中的重复字段
EN

Stack Overflow用户
提问于 2013-07-04 14:35:24
回答 1查看 317关注 0票数 1

我有一个推进shcema.xml:

代码语言:javascript
复制
    <?xml version="1.0" encoding="UTF-8"?>
<database name="issue-tracker" defaultIdMethod="native">
    <table name="user" phpName="User">
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
        <column name="username" type="varchar" size="32" required="true" />
        <column name="password" type="varchar" size="32" required="true"/>
        <unique>
            <unique-column name="username"/>
        </unique>   
    </table>
    <table name="issue" phpName="Issue">
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
        <column name="title" type="varchar" size="255" required="true" />
        <column name="description" type="varchar" size="200" required="true" phpName="Description"/>
        <column name="user_id" type="integer" required="true"/>
        <foreign-key foreignTable="user">
            <reference local="user_id" foreign="id"/>
        </foreign-key>
    </table>
    <table name="tag" phpName="Tag">
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
        <column name="title" type="varchar" size="255" required="true" />
        <unique>
            <unique-column name="title"/>
        </unique>   
    </table>
    <table name="issue_tag" isCrossRef="true" phpName="IssueTag">
        <column name="issue_id" type="integer" primaryKey="true"/>
        <column name="tag_id" type="integer" primaryKey="true"/>
        <foreign-key foreignTable="issue" onUpdate="CASCADE" onDelete="CASCADE">
            <reference local="issue_id" foreign="id"/>
        </foreign-key>
        <foreign-key foreignTable="tag" onUpdate="CASCADE" onDelete="CASCADE">
            <reference local="tag_id" foreign="id"/>
        </foreign-key>
    </table>
    <table name="user_issue" isCrossRef="true" phpName="UserIssue">
        <column name="user_id" type="integer" primaryKey="true"/>
        <column name="issue_id" type="integer" primaryKey="true"/>
        <foreign-key foreignTable="user" onUpdate="CASCADE" onDelete="CASCADE">
            <reference local="user_id" foreign="id"/>
        </foreign-key>
        <foreign-key foreignTable="issue" onUpdate="CASCADE" onDelete="CASCADE">
            <reference local="issue_id" foreign="id"/>
        </foreign-key>
        <unique>
            <unique-column name="issue_id"/>
        </unique>   
    </table>
</database>

当我运行推进生成器时,它在BaseUser.php中生成重复字段。

代码语言:javascript
复制
    protected $collIssues;
    protected $collIssuesPartial;

    protected $collIssues;

如您所见,有双倍的$collIssues字段。如果我从最后一个表user_issue中删除外键,问题就会消失。

有人能帮我,或者至少解释一下,给我一个解决办法的提示吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-05 20:35:27

问题在于Propel是从两个不同的地方添加问题的集合,一次来自issue中的外键,一次来自user_issue中的外键。这是一个简单的解决方法,您只需使用refPhpName属性即可。有关Propel文档属性的更多信息,请查看foreign-key

代码语言:javascript
复制
<table name="issue" phpName="Issue">
    <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
    <column name="title" type="varchar" size="255" required="true" />
    <column name="description" type="varchar" size="200" required="true" phpName="Description"/>
    <column name="user_id" type="integer" required="true"/>

    <!-- notice the additional attributes below -->
    <foreign-key foreignTable="user" phpName="Creator" refPhpName="CreatedIssues">
        <reference local="user_id" foreign="id"/>
    </foreign-key>
</table>

然后,在代码中以不同的方式访问Creator字段:

代码语言:javascript
复制
$myIssues = $user->getCreatedissues();
$creatorUser = $issue->getCreator();
$issuesCreatedByUser = IssueQuery::create()
  ->filterByCreator($user)
  ->find();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17472963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档