我正在使用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();
非常感谢任何建议
答案 0 :(得分:0)
快速浏览一下Propel。
此选项会返回您要求的内容,('Id','Name','Profile.Telephonenumber')。
\UserQuery::create()
->join('Profile')
->select(array('Id', 'Name', 'Profile.Telephonenumber'))
->find()
->toArray();
//返回一个数组,其值为'Id','Name','Profile.Telephonenumber'
如果您希望“用户”表的所有条目和“个人资料”中的条目作为子数组,请尝试以下操作:
\UserQuery::create()
->join('User.Profile')
->find()
->toArray();
//返回一个数组,其中包含“User”表中的所有条目以及一个包含“Profile”表中条目的子数组。
对不起,如果我犯了任何错误,这是我在Stackoverflow上的第一个答案
祝你有愉快的一天,
M.I。
答案 1 :(得分:0)
您可能应该使用withColumn(),例如
\UserQuery()::create()
->leftJoinWithProfile()
->withColumn('Profile.TelephoneNumber', 'TelephoneNumber')
->select(['Id', 'Name', 'TelephoneNumber'])
->find()
->toArray();