gpt4 book ai didi

php - Doctrine ORM 异常

转载 作者:行者123 更新时间:2023-11-29 10:56:02 24 4
gpt4 key购买 nike

编辑:我做了@MichaelHirschler和@MayaShah的建议,它解决了问题,它允许我使用doctrine:migration:diff命令创建一个Doctrine Migration文件,但是当我尝试使用doctrine:migration:migrate将这些更改迁移到数据库时出现以下错误。

迁移 20170325192546 在执行期间失败。错误执行“ALTER TABLE业务ADD CONSTRAINT FK_8D36E3844FFE0C3 FOREIGN KEY (client_email) REFERENCES client (clientEmail)”时发生异常:

SQLSTATE[HY000]:一般错误:1005 无法创建表“eship_case.#sql-81c_e”(错误号:150)
[Doctrine\DBAL\Exception\DriverException] 执行“ALTER TABLE Business ADD CONSTRAINT FK_8D36E3844FFE0C3 FOREIGN KEY (client_email) REFERENCES client (clientEmail)”时发生异常:

我知道这是一个 MySQL 错误,但我认为 Doctrine 会处理迁移,所以当它没有处理时,我不知道如何修复它。我可以在 MySQL 上手动执行架构来解决此问题,但我不知道这会如何影响 Symfony 中的 ORM 架构。抱歉打扰,我是 PHP 新手,因此也是 Symfony 和 Doctrine 新手。

原帖:我正在使用 Symfony 框架和 MySQL 作为数据库制作一个 Web 应用程序。我正在使用 Doctrine 进行 ORM 来映射数据库。但是当我尝试更新数据库架构以包含外键时,出现以下错误: 1我不太理解这个错误,我将不胜感激任何人能给我的帮助。

这是两个类的代码。客户端的主键是 clientEmail,我想将该键与业务实体建立关系。我知道可能缺少一些文档,但我正在尝试修复此错误,然后再进行处理。类(class)时间更长,但我只发布了可能导致问题的区域。

商务舱:

<?php
/**
* @ORM\Entity
* @ORM\Table(name="business")
*/
class Business
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
private $businessId;

/**
* @ORM\Column(type="string")
*/
private $name;

/**
* @ORM\Column(type="string")
*/
private $stage_Of_Development;


//Relations

/**
* @ORM\ManyToOne(targetEntity="Client")
*/
private $client;


//Getters and Setters

/**
* @return mixed
*/
public function getClient()
{
return $this->client;
}

/**
* @param mixed $client
*/
public function setClient(Client $client)
{
$this->client = $client;
}
}

客户端类:

<?php
/**
* @ORM\Entity
* @ORM\Table(name="client")
*/
class Client
{
/**
* @ORM\ID
* @ORM\Column(type="string")
*/
private $clientEmail;

/**
* @return mixed
*/
public function getClientEmail()
{
return $this->clientEmail;
}

/**
* @param mixed $clientEmail
*/
public function setClientEmail($clientEmail)
{
$this->clientEmail = $clientEmail;
}
}

最佳答案

请为客户字段添加联接列。

/**
* @ORM\ManyToOne(targetEntity="Client")
* @ORM\JoinColumn(name="client_email", referencedColumnName="clientEmail")
*/
private $client;

关于php - Doctrine ORM 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43013351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com