教义,通货膨胀ManyToOne

时间:2017-12-14 13:58:53

标签: php symfony doctrine-orm one-to-many many-to-one

尝试更新我的数据库时出错:

  

SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败   (@ApplicationScoped @ConditionalOnMissingBean(SomeService.class) public class SomeServiceDefaultImpl implements SomeService { @Override public String doSomeCalculation() { return "from default implementation"; } } symfony,CONSTRAINT #sql-d8c_55 FOREIGN KEY   (FK_957A6479A233CB39)参考klient_idklient))

我的班级用户:

id

类Klient

namespace AppBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;


/**
 * Class User
 * @package AppBundle\Entity
 *
 * @ORM\Table("fos_user")
 * @ORM\Entity()
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;


    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Klient", inversedBy="users")
     * @ORM\JoinColumn(nullable=false)
     */
    private $klient;

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

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

    public function __construct()
    {
        parent::__construct();

    }
}

1 个答案:

答案 0 :(得分:0)

在我看来你有这个错误,因为你的数据库中已有数据。当您尝试在用户表上添加外键时,kcient_id为null。在您的定义中,您指定为nullable:false。

我建议你继续两次。

  1. 将您的注释编辑为可为空:true,更新您的数据库并将您的客户端链接到klient

  2. 将您的注释重新编辑为可为空:false,应该没问题