Составной первичный ключ в Symfony - PullRequest
0 голосов
/ 27 сентября 2018

Я вижу эту ошибку на своей странице.

Привязка объекта с составным первичным ключом к запросу не поддерживается.Вы должны разделить параметр на явные поля и связать их отдельно.

В моей базе данных у меня есть три таблицы: Campagne , Contact и campagne_contact .Контакт может быть во многих кампанах, насколько это возможно, но не может быть в одном и том же кампане дважды, поэтому у меня есть составной первичный ключ в campagne_contact .

Я успешно использовал отношения ManyToMany, но этовремя, campagne_contact имеет дополнительное поле, которое смс .

И я не понимаю, что я должен делать, хотя то, что я должен сделать, это ошибка,Могу я получить какое-нибудь объяснение, пожалуйста?

     namespace Sfr\PowerSBundle\Entity;

    use Doctrine\ORM\Mapping as ORM;
    use Doctrine\Common\Collections\ArrayCollection;

    use Doctrine\ORM\Mapping\Id;
    use Doctrine\ORM\Mapping\Column;
    use Doctrine\ORM\Mapping\ManyToOne;

    /**
     * CampagneContact
     *
     * @ORM\Entity
     * @ORM\Table(name="campagne_contact")
     */
    class CampagneContact
    {
        /**
         * @Id
         * @ManyToOne(targetEntity="Contact")
         */
        private $contact;

        /**
         * @Id
         * @ManyToOne(targetEntity="Campagne")
         */
        private $campagne;   
    }

<?php

namespace Sfr\PowerSBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Campagne
 *
 * @ORM\Table(name="campagne")
 * @ORM\Entity(repositoryClass="Sfr\PowerSBundle\Repository\CampagneRepository")
 */
class Campagne
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var boolean
     *
     * @ORM\Column(name="lundi", type="boolean", nullable=false)
     */
    private $lundi;

    /**
     * @var boolean
     *
     * @ORM\Column(name="mardi", type="boolean", nullable=false)
     */
    private $mardi;

    /**
     * @var boolean
     *
     * @ORM\Column(name="mercredi", type="boolean", nullable=false)
     */
    private $mercredi;

    /**
     * @var boolean
     *
     * @ORM\Column(name="jeudi", type="boolean", nullable=false)
     */
    private $jeudi;

    /**
     * @var boolean
     *
     * @ORM\Column(name="vendredi", type="boolean", nullable=false)
     */
    private $vendredi;

    /**
     * @var boolean
     *
     * @ORM\Column(name="samedi", type="boolean", nullable=false)
     */
    private $samedi;

    /**
     * @var boolean
     *
     * @ORM\Column(name="dimanche", type="boolean", nullable=false)
     */
    private $dimanche;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="start_time", type="time", nullable=false)
     */
    private $startTime;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="end_time", type="time", nullable=false)
     */
    private $endTime;

    /**
     * @var string
     *
     * @ORM\Column(name="note", type="text", length=65535, nullable=true)
     */
    private $note;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="text", length=255, nullable=false)
     */
    private $name;

    /**
     * @var boolean
     *
     * @ORM\Column(name="is_enabled", type="boolean", nullable=false)
     */
    private $isEnabled;

    private $nbContacts;
    public $nbJours = 0;

     /**
     * @var \Doctrine\Common\Collections\ArrayCollection|Contact[]
     * @ORM\ManyToMany(targetEntity="Contact", mappedBy="campagnes")
     */
    private $contacts;

<?php

namespace Sfr\PowerSBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Contact
 *
 * @ORM\Table(name="contact")
 * @ORM\Entity(repositoryClass="Sfr\PowerSBundle\Repository\ContactRepository")
 */
class Contact
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="first_name", type="string", length=128, nullable=false)
     */
    private $firstName;

    /**
     * @var string
     *
     * @ORM\Column(name="last_name", type="string", length=128, nullable=false)
     */
    private $lastName;

    /**
     * @var string
     *
     * @ORM\Column(name="email", type="string", length=128, nullable=false)
     */
    private $email;

    /**
     * @var string
     *
     * @ORM\Column(name="phone", type="string", length=20, nullable=true)
     */
    private $phone;

    /**
     * @var string
     *
     * @ORM\Column(name="cellphone", type="string", length=20, nullable=true)
     */
    private $cellphone;

    /**
   * @ORM\ManyToOne(targetEntity="Sfr\PowerSBundle\Entity\Client")
   * @ORM\JoinColumn(name="client_id", referencedColumnName="ID", nullable=false)
   */
    private $client;


    public function __construct()
    {
        $this->campagnes = new \Doctrine\Common\Collections\ArrayCollection();
    }

Кстати, я использую Symfony 3.

Спасибо за вашу помощь.

...