使用左连接限制Propel v2查询结果中的字段

时间:2016-06-17 12:03:06

标签: php propel2

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

这样做的最佳方式是什么?

我的表格结构如下:

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

我尝试过以下操作,但查询不返回包含子User个对象的所需Profile对象,而只返回Id, Name对象的User的所选字段, TelephoneNumber子对象的Profile

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

非常感谢任何建议

2 个答案:

答案 0 :(得分: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();

    //返回一个数组,其中包含“User”表中的所有条目以及一个包含“Profile”表中条目的子数组。

  3. 对不起,如果我犯了任何错误,这是我在Stackoverflow上的第一个答案 祝你有愉快的一天,
    M.I。

答案 1 :(得分:0)

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

\UserQuery()::create()
    ->leftJoinWithProfile()
    ->withColumn('Profile.TelephoneNumber', 'TelephoneNumber')
    ->select(['Id', 'Name', 'TelephoneNumber'])
    ->find()
    ->toArray();