я использую 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();
Любой совет с благодарностью
просто быстро осмотрел пропел.
Этот выбор возвращает то, о чем вы просили («Id», «Name», «Profile.Telephonenumber»).
\UserQuery::create()
->join('Profile')
->select(array('Id', 'Name', 'Profile.Telephonenumber'))
->find()
->toArray();
// возвращает массив со значениями для «Id», «Name», «Profile.Telephonenumber»
Если вы хотите, чтобы все записи таблицы ‘User’ и записи из ‘Profile’ были дочерним массивом, попробуйте это:
\UserQuery::create()
->join('User.Profile')
->find()
->toArray();
// возвращает массив со всеми записями из таблицы «Пользователь» и дочерний массив с записями из таблицы «Профиль».
Извините, если я допустил какие-либо ошибки, это мой первый ответ на Stackoverflow.
Хорошего дня,
M.I.
Других решений пока нет …