SfDoctrineForm – Как я могу проверить, существует ли объект во встроенной форме, и связать его с новым родительским объеPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 SfDoctrineForm – Как я могу проверить, существует ли объект во встроенной форме, и связать его с новым родительским объе

Сообщение Anonymous »

Я работаю над формой регистрации пользователя, которая включает в себя три различных объекта: пользователя, профиль участника и членскую организацию. Я пытаюсь встроить все это в единую регистрационную форму, например Пользователь > Участник > Школа. Базовая реализация этого прекрасно работает с типичной процедурой sfDoctrineForm::embedRealtion.

Проблема в том, что организация имеет уникальный индекс для своегоmember_number

code>, единственный раз, когда указанное значение не будет в базе данных, это когда этот пользователь первым зарегистрируется в своей организации. Таким образом, в этом случае мы получим ошибку проверки (или нарушение ограничения ключа, если мы отключим проверку).

Вместо этого я хочу, чтобы я проверил для существования MemberOrganization с тем же номером_члена в базе данных (либо в валидаторе до/после, либо в updateObject, либо там, где это возможно). Если номер участника уже существует, я хочу связать новый MemberProfile с этой существующей организацией, а не связывать его с новым, который был отправлен, выбрасывая все новые значения для этой организации.
Я пытался изменить объект в форме организации посредством проверки, но это всегда приводит к нарушению ограничения Organization_id, исходящего из профиля:

$object = $this->getObject();
$table = $object->getTable();
$existing = $table->findOneByMemberNumber($values['member_number']);
if($existing)
{
$members = clone $object->Members;
$object->assignIdentifier($existing->identifier());
$object->fromArray($existing->toArray(false), false);

foreach($members as $member)
{
$member->link($object);
}

$values = $object->toArray(false); // return only the direct values
}

return $values;


Схема выглядит примерно так:

User:
columns:
username: {type: string(100)}
email: {type: string(255), unique: true}

MemberProfile:
columns:
# some none authentication related user details
organization_id: {type: integer, notull: true}
user_id: {type: integer, notnull: true}
relations:
User:
local: user_id
type: one
foreign: id
foreignType: one
MemberOrganization:
local: orgainization_id
type: one
foreign: id
foreignType: many
foreignAlias: Members

MemberOrganization:
columns:
membership_number: {type: string(255), unique: true}
# other organization data


Подробнее здесь: https://stackoverflow.com/questions/525 ... sts-and-re
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»