【发布时间】:2016-01-07 04:57:53
【问题描述】:
我遇到了 Propel2(版本 2.0.0-dev)的问题。
我有三个外键指向同一个表:
<foreign-key foreignTable="sites" phpName="Site" refPhpName="Timesheet">
<reference local="siteID" foreign="siteID"/>
</foreign-key>
<foreign-key foreignTable="sites" phpName="FromSite">
<reference local="from_siteID" foreign="siteID"/>
</foreign-key>
<foreign-key foreignTable="sites" phpName="ToSite">
<reference local="to_siteID" foreign="siteID"/>
</foreign-key>
尽管有不同的 PhpNames,但基类会错误地生成 default: $key:
if (null !== $this->aToSite) {
switch ($keyType) {
case TableMap::TYPE_CAMELNAME:
$key = 'site';
break;
case TableMap::TYPE_FIELDNAME:
$key = 'sites';
break;
default:
$key = 'Site';
}
$result[$key] = $this->aToSite->toArray($keyType, $includeLazyLoadColumns, $alreadyDumpedObjects, true);
}
default: $key 应该是 ToSite,而不是 Site。 FromSite 也是如此。结果,Site 表只为Site 加入,但不为FromSite 和ToSite 加入,这随后不允许我使用FromSite 和ToSite 调用对象。
表格按以下方式连接:
$timesheets = TimesheetQuery::create()
->select(Timesheet::getTransferFieldsWithRelations())
...
->joinWith("Timesheet.FromSite FromSite", Criteria::LEFT_JOIN)
->joinWith("Timesheet.ToSite ToSite", Criteria::LEFT_JOIN)
->joinWith("Timesheet.Site Site", Criteria::LEFT_JOIN)
...
有没有办法解决这个问题?
【问题讨论】:
标签: php mysql orm schema propel