Я работаю над формой регистрации пользователя, которая включает в себя три различных объекта: пользователя, профиль участника и членскую организацию. Я пытаюсь встроить все это в единую регистрационную форму, например Пользователь > Участник > Школа. Базовая реализация этого прекрасно работает с типичной процедурой 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
SfDoctrineForm – Как я могу проверить, существует ли объект во встроенной форме, и связать его с новым родительским объе ⇐ Php
Кемеровские программисты php общаются здесь
1719129162
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
Подробнее здесь: [url]https://stackoverflow.com/questions/5251627/sfdoctrineform-how-can-i-check-if-the-object-in-an-embedded-form-exists-and-re[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия