Работая над проектом с Zend Framework, я использую Propel ORM со многими связанными объектами базы данных.Я новичок в обоих, но у меня есть объектные модели, созданные и работающие.Сейчас я просто пытаюсь разобраться с доступом к объектам.
У меня есть метод для создания нового пользователя, его работы и обновления связанных строк (Не все связанные, но это начало).Теперь я хочу представить «Новые» пользовательские данные системному пользователю (создателю пользователя).Я вернул имя пользователя и теперь хочу получить UserLevel среди нескольких других свойств.
После создания пользователя я вызываю свой метод findUserByUserName, передавая имя пользователя нового пользователя, я получаю обратно все в таблицу Users, но мне также нужны свойства из таблицы 'AgenciesAndUsers', которые связаны с этим новым пользователем.
Это то, что я пытаюсь, но оно «не работает», кажется, работает, к тому же оно не кажется правильным в любом случае ... Я должен быть в состоянии передать «Users->» в AgenciesAndUsers, чтобы получить связанныесвойства для этого пользователя:
$User = UsersQuery::create()->findOneByUserName($UserName);
$UserId = $User->getUserId();
$UserData = AgenciesAndUsersQuery::create()->findOneByUserId($UserId);
$data = // merge the two objects
return $data;
Здесь я остановился, потому что понял, что если это работает, мне нужно передать два объекта обратно в мой контроллер (или как бы он ни вызывал мой метод).Подожди ... Я знаю, что есть ... так "Как мне" получить доступ к свойствам из связанного объекта?Я знаю, что это половина ... или, может быть, целая ... причина для использования системы ORM в любом случае:)
Я пытался отменить то, что сделал при создании своего пользователя, но я просто не могу этого сделатьЭто.Кроме того, может быть лучше просто передать данные нового пользователя после создания нового пользователя в этом методе, разве у меня нет постоянного объекта после создания нового пользователя?Но мне все равно понадобится метод 'findUserByUserName' среди многих других.
Вот как я создаю своего нового пользователя и его данные AgencyAndUser тоже ...
$user = new Users();
$user->setActive($Active);
$user->setCreatedAt($CreatedAt);
$user->setEmailAddress($EmailAddress);
$user->setEnabledInForms($EnabledInForms);
$user->setFirstName($FirstName);
$user->setInitialPassword($InitialPassword);
$user->setLastName($LastName);
$user->setModifiedAt($ModifiedAt);
$user->setPassword($UserPassword);
$user->setPhoneNumber($PhoneNumber);
$user->setTitle($Title);
$user->setUserName($UserName);
$user->setUserPasswordActive($UserPasswordActive);
$user->save();
$AgnecyAndUser = new AgenciesAndUsers();
$AgnecyAndUser->setAgencyId($AgencyId);
$AgnecyAndUser->setUserLevel($UserLevel);
// associate the $Users object with the current $AgnecyAndUser
$AgnecyAndUser->setUsers($user);
$AgnecyAndUser->save();
Редактировать: Iтолько что понял (посмотрев на мой опубликованный вопрос), что я мог бы, вероятно, «связать» все эти свойства «пользователя» в режиме онлайн вместо того, чтобы повторять «$ User» снова и снова.
Получилось чисто, прямоиз Руководства Propel ... который, кстати, я прочитал также во многих разделах, просто с проблемами при запуске как новичок / новичок.