php - Symfony 中的复合主键
问题描述
我的页面上显示此错误。
不支持将具有复合主键的实体绑定到查询。您应该将参数拆分为显式字段并分别绑定它们。
那么在我的数据库中,我有三个表,分别是Campagne、Contact和campagne_contact。一个联系人可以在多个campagne中,但不能在同一个campagne中两次,这就是为什么我在campagne_contact中有一个复合主键。
我已经成功地使用了 ManyToMany 关系,但这次campagne_contact有一个额外的字段,即sms。
而且我不明白我必须做什么,尽管我必须做的是错误。请问我能解释一下吗?
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。
谢谢你的帮助。
解决方案
推荐阅读
- javascript - 如何将十六进制字符串转换为可读的数字/十进制表示(来自 RS485 串行设备的压力读出响应)
- c++ - CMake error in CLion after updating CMake
- firebase - Allow anonymous user to write to firebase firestore
- sql-server - 带有子查询错误的 ADO 参数化查询
- php - 显示特定列
- javascript - 数据表编辑器无法自动确定来自源的字段
- swiftui - SwiftUI 从视图中传递参数
- jenkins - 如何通过 ssh 进入 Jenkinsfile 中的服务器
- javascript - 使用 request.getParam 获取按钮的 id
- limit - 如何知道qqPlot置信限?