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



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

最好的方法是什么?

我的表结构如下所示:

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

我已经尝试了以下内容,但查询没有返回所需的User对象,其中包含子对象Profile对象,并且仅返回User对象的选定Id, Name字段和Profile子对象的TelephoneNumber字段:

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

任何建议将不胜感激

只是快速浏览了Propel。

  1. 此选择返回您请求的内容("Id"、"姓名"、"个人资料.电话号码")。

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

    返回一个数组,其中包含"Id"、"Name"、"Profile.Phone"的值

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

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

    //返回一个数组,其中包含"User"表中的所有条目和一个包含"配置文件"表中条目的子数组。

对不起,如果我犯了任何错误,这是我在Stackoverflow上的第一个答案。
祝你有美好的一天,
麻省理工学院

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

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

最新更新