propelorm/Propel

One or more of your column names for [posts] table conflict with foreign ke y names (User)

tbhaxor opened this issue · 1 comments

Schema File

<?xml version="1.0" encoding="UTF-8"?>
<database name="cms" defaultIdMethod="native">
  <table name="posts" phpName="Post">
    <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"></column>
    <column name="title" type="varchar" required="true"></column>
    <column name="description" type="varchar" required="true"></column>
    <column name="created_on" type="bu_timestamp"></column>
    <column name="user" type="integer" required="true"></column>
    <foreign-key foreignTable="users" phpName="User" refPhpName="Post">
      <reference local="user" foreign="id"/>
    </foreign-key>
  </table>

  <table name="users" phpName="User">
    <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
    <column name="name" type="varchar" required="true"/>
    <column name="email" type="varchar" required="true"/>
    <column name="password" type="varchar" required="true"/>
  </table>
</database>

The easiest workaround is to rename your column posts.user to posts.user_id, or add a phpName to it of .e.g user_id.

The problem being that Propel wants to create a getUser() method (returning the hydrated User object) AND also a getUser() method that returns the posts.user integer.

Obviously in PHP the two can't exist; so you have to resolve the naming conflict.