나는이 문제에 대한 해결책을 찾는 데 어려움을 겪고 있습니다. 나는 manytomany 관계로 2 클래스의 연락처와 전화를 가지고 있습니다. phones 테이블에는 countryCode와 number의 두 필드가 있습니다. 나는 2 개의 연락처가 같은 전화 번호를 가지고 있지 않은지 확인하고 싶기 때문에 2 개의 필드의 조합에 대한 유효성을 검사한다. 마지막 코드는이 코드이지만 많은 가능성을 시험해 보았습니다. Symfony 3 many-to-many 관계가있는 uniqueEntity 유효성 확인
An exception occurred while executing 'SELECT t0.id AS id_1, t0.title AS title_2, t0.first_name AS first_name_3, t0.surname AS surname_4, t0.email AS email_5 FROM contact t0 WHERE contact_phones.phone_id = ?' with params [{}]:
SQLSTATE[42S22]: Column not found: 1054 Champ 'contact_phones.phone_id' inconnu dans where clause
여러분의 도움에 감사드립니다 : 나는 다음과 같은 오류가이 코드
/**
* Contact
*
* @ORM\Table(
* name="contact"
*)
* @ORM\Entity(repositoryClass="EPI\PlatformBundle\Repository\ContactRepository")
*
* @UniqueEntity(fields={"email"}, message="ce mail existe déjà")
* @UniqueEntity(fields={"phoneNumbers"}, message="this phone number already exists")
*
*/
class Contact
{
/**
* @var int
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* One User can have several Phonenumbers.
* @ORM\ManyToMany(targetEntity="Phone", cascade={"persist", "remove"}, orphanRemoval=true)
* @ORM\JoinTable(name="contact_phones",
* joinColumns={@ORM\JoinColumn(name="contact_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="phone_id", referencedColumnName="id", unique=true, onDelete="CASCADE")}
* )
*/
/**
* Phone
*
* @ORM\Table(name="phone")
* @ORM\Entity(repositoryClass="EPI\PlatformBundle\Repository\PhoneRepository")
*
*/
class Phone
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="country_code", type="string", length=4)
*/
private $countryCode;
/**
* @var string
*
* @ORM\Column(name="phone_nb", type="string", length=9)
*/
private $phoneNb;
class ContactType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title', ChoiceType::class, array(
'choices' => array(
'Madame' => 'Madame',
'Monsieur' => 'Monsieur'
)
))
->add('firstName', TextType::class)
->add('surname', TextType::class)
->add('email', EmailType::class)
->add('phoneNumbers', CollectionType::class, array(
'entry_type' => PhoneType::class,
'entry_options' => array('label' => false),
'allow_add' => 'true',
'allow_delete' => 'true',
'error_bubbling' => 'true'
));
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'EPI\PlatformBundle\Entity\Contact',
));
}
/**
* {@inheritdoc}
*/
public function getName()
{
return 'contact';
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'contact';
}
}
.
많은 관계'php bin/console doctrine : schema : update --force'를 작성한 후에 스키마를 업데이트 했습니까? – teeyo
코드가 불완전하기 때문에 질문을 짧게하기 위해 일부 수업이 생략되었지만 설명서의 모든 지침을 따랐다면 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/ association-mapping.html # many-to-many-unidirectional 아마도 데이터베이스 스키마를 업데이트하는 것을 잊어 버렸기 때문에 언급 된 예외가 발생할 수 있습니다. – teeyo
스키마를 업데이트했습니다. 그러나 manytomany 관계는 잘 작동합니다. 내가 가지고있는 문제는 uniqueEntity 유효성 검사와 관련이 있습니다. – Jerry