Php 使用ORM插入数据库时出错

Php 使用ORM插入数据库时出错,php,orm,doctrine-orm,Php,Orm,Doctrine Orm,我试图将数据插入数据库,但它显示了一些类似这样的错误 我的模型实体 Request.php 在这里`正如@rokas所建议的,您应该开始阅读更多关于教义的内容。这不是Mouf问题,这显然是条令ORM问题,因此相应的文件如下: 以下是一些提示: 控制器调用setdata方法 $user_data=$this->requestDao->setdata(); setdata方法调用: $product= $this->create('Keyboard','000000001ae10

我试图将数据插入数据库,但它显示了一些类似这样的错误

我的模型实体

Request.php


在这里`正如@rokas所建议的,您应该开始阅读更多关于教义的内容。这不是Mouf问题,这显然是条令ORM问题,因此相应的文件如下:

以下是一些提示:

控制器调用
setdata
方法

$user_data=$this->requestDao->setdata();
setdata
方法调用:

$product= $this->create('Keyboard','000000001ae10dda000000003c4667a6','Ergonomic and stylish!','1111');
现在,
create
方法是:

public function create(...$params) : Request
{
    $entity = new Request(...$params);
    $this->getEntityManager()->persist($entity);
    return $entity;
}
这意味着它将使用以下参数调用
请求
构造函数:

$entity = new Request('Keyboard','000000001ae10dda000000003c4667a6','Ergonomic and stylish!','1111');
查看
请求
构造函数:

public function __construct($salesperson, $client, $status, $qualification) {
    $this->salesperson = $salesperson;
    $this->client = $client;
    $this->status = $status;
    $this->qualification = $qualification;
}
如您所见,第一个参数是
$salesperson
。您尝试在此处输入值“键盘”。
$salesperson
属性的定义如下:

/**
 * @ORM\ManyToMany(targetEntity="Salesperson", inversedBy="request")
 * @ORM\JoinTable(name="request_salesperson")
 * @var Salesperson
 */
private $salesperson;

/**
 * @param Salesperson $salesperson
 */
public function setSalesperson($salesperson)
{
    $this->salesperson = $salesperson;
}
现在,我想这是你的问题

$salesperson
属性被定义为“多个”关联。所以你真的不能把一个字符串放在这里,它是一个销售人员的集合。顺便说一下,你也不应该“设置”任何东西。设置器应完全拆下

相反,你应该考虑使用这里的文档:

例如:

$request->getSalesPersons()->add($someObjectRepresentingAPerson);

另外,请注意,由于
$salessorn
表示salessorn对象的集合,因此您应该在
请求
salessorn
中将其命名为
$salessorns
(复数形式)

,并且
状态
应该是数组集合,但您将其指定为字符串。尝试使用以下示例:
$this->salesperson[]=$salesperson和状态为<代码>的等等,我没有得到。。你能说清楚吗?
manytomy
OneToMany
关系总是数组集合,所以变量应该是数组(例如:)那么我应该在我的实体中更改它吗?我是这个表单中的新成员,我感到困惑是的,你的
销售人员
状态设置者应该设置数组。另外,不要忘记在构造函数中更改它。例:
$this->salesperson[]=$salesperson$entity = new Request('Keyboard','000000001ae10dda000000003c4667a6','Ergonomic and stylish!','1111');
public function __construct($salesperson, $client, $status, $qualification) {
    $this->salesperson = $salesperson;
    $this->client = $client;
    $this->status = $status;
    $this->qualification = $qualification;
}
/**
 * @ORM\ManyToMany(targetEntity="Salesperson", inversedBy="request")
 * @ORM\JoinTable(name="request_salesperson")
 * @var Salesperson
 */
private $salesperson;

/**
 * @param Salesperson $salesperson
 */
public function setSalesperson($salesperson)
{
    $this->salesperson = $salesperson;
}
$request->getSalesPersons()->add($someObjectRepresentingAPerson);