0

我正在使用Propel ORM v2从一个表中检索记录,该表使用外键链接到另一个表的记录。我想只返回父表和子表中的某些字段。

做这个的最好方式是什么?

我的表结构如下所示:

Table: User
- Id
- Name
- Age
- MaritalStatus
Table: Profile
- UserId (FK->User.Id)
- Street
- City
- State
- Country
- TelephoneNumber

我尝试了以下方法,但查询没有返回User带有子对象的所需对象,并且只返回对象和子对象的Profile选定字段:Id, NameUserTelephoneNumberProfile

\UserQuery()::create
->select(array('Id', 'Name', 'Profile.Telephonenumber'))
->leftJoinWithProfile()
->find()
->toArray();

非常感谢任何建议

4

2 回答 2

0

只是快速浏览了 Propel。

  1. 此选择返回您所要求的内容('Id'、'Name'、'Profile.Telephonenumber')。

    \UserQuery::create() ->join('Profile') ->select(array('Id', 'Name', 'Profile.Telephonenumber')) ->find() ->toArray();

    //返回一个数组,其中包含 'Id'、'Name'、'Profile.Telephonenumber' 的值

  2. 如果您希望“用户”表的所有条目和“配置文件”中的条目作为子数组,请尝试以下操作:

    \UserQuery::create() ->join('User.Profile') ->find() ->toArray();

    //返回一个包含“用户”表中所有条目的数组和一个包含“配置文件”表中条目的子数组。

抱歉,如果我犯了任何错误,这是我在 Stackoverflow 上的第一个答案。
祝你有美好的一天,
MI

于 2016-06-17T12:59:43.397 回答
0

您可能应该使用 withColumn(),例如

\UserQuery()::create()
    ->leftJoinWithProfile()
    ->withColumn('Profile.TelephoneNumber', 'TelephoneNumber')
    ->select(['Id', 'Name', 'TelephoneNumber'])
    ->find()
    ->toArray();
于 2019-09-20T11:45:41.103 回答