我正在使用 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。
-
此选择返回您请求的内容("Id"、"姓名"、"个人资料.电话号码")。
UserQuery::create() ->join('Profile') ->select(array('Id', 'Name', 'Profile.Telephonenumber')) ->find() ->toArray();
返回一个数组,其中包含"Id"、"Name"、"Profile.Phone"的值
-
如果您希望将"User"表的所有条目和"配置文件"中的条目作为子数组,请尝试以下操作:
UserQuery::create() ->join('User.Profile') ->find() ->toArray();
//返回一个数组,其中包含"User"表中的所有条目和一个包含"配置文件"表中条目的子数组。
对不起,如果我犯了任何错误,这是我在Stackoverflow上的第一个答案。
祝你有美好的一天,
麻省理工学院
你可能应该使用 withColumn(),例如
UserQuery()::create()
->leftJoinWithProfile()
->withColumn('Profile.TelephoneNumber', 'TelephoneNumber')
->select(['Id', 'Name', 'TelephoneNumber'])
->find()
->toArray();