私はManyToOneリレーションを持つデータをDataFixturesクラスに保存しようとしています。データを保存する際にこのエラーが発生します。Symfony3 "SQLSTATE [23000]:整合性制約違反:1048カラム 'catId'をnullにすることはできません。
お願いします。
出典:
エンティティ/ DealsCategory.php:
<?php
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* DealsCategory
*
* @ORM\Table(name="deals_category")
* @ORM\Entity(repositoryClass="AppBundle\Repository\DealsCategoryRepository")
*/
class DealsCategory
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="alias", type="string", length=50, nullable=true)
*/
private $alias;
/**
* @ORM\OneToMany(targetEntity="DealsCategoryLang", mappedBy="category")
*/
protected $categoryLang;
/**
* @return mixed
*/
public function getCategoryLang()
{
return $this->categoryLang;
}
/**
* @param DealsCategoryLang $categoryLang
*/
public function setCategoryLang(DealsCategoryLang $categoryLang = null)
{
$this->categoryLang = $categoryLang;
}
/**
* @param DealsCategoryLang $categoryLang
*/
public function setOneCategoryLang(DealsCategoryLang $categoryLang)
{
$this->categoryLang[] = $categoryLang;
}
/**
* DealsCategory constructor.
*/
public function __construct()
{
$this->categoryLang = new ArrayCollection();
}
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set alias
*
* @param string $alias
*
* @return DealsCategory
*/
public function setAlias($alias)
{
$this->alias = $alias;
return $this;
}
/**
* Get alias
*
* @return string
*/
public function getAlias()
{
return $this->alias;
}
}
エンティティ/ DealsCategoryLang.php:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* DealsCategoryLang
*
* @ORM\Table(name="deals_category_lang")
* @ORM\Entity(repositoryClass="AppBundle\Repository\DealsCategoryLangRepository")
*/
class DealsCategoryLang
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var int
*
* @ORM\Column(name="catId", type="integer")
*/
private $catId;
/**
* @var string
*
* @ORM\Column(name="lang", type="string", length=10)
*/
private $lang;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=70)
*/
private $title;
/**
* @ORM\ManyToOne(targetEntity="DealsCategory", inversedBy="categoryLang", cascade={"persist"})
* @ORM\JoinColumn(name="catId", referencedColumnName="id")
*
*/
protected $category;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set catId
*
* @param integer $catId
*
* @return DealsCategoryLang
*/
// public function setCatId($catId)
// {
// $this->catId = $catId;
//
// return $this;
// }
/**
* Get catId
*
* @return int
*/
public function getCatId()
{
return $this->catId;
}
/**
* Set lang
*
* @param string $lang
*
* @return DealsCategoryLang
*/
public function setLang($lang)
{
$this->lang = $lang;
return $this;
}
/**
* Get lang
*
* @return string
*/
public function getLang()
{
return $this->lang;
}
/**
* Set title
*
* @param string $title
*
* @return DealsCategoryLang
*/
public function setTitle($title)
{
$this->title = $title;
return $this;
}
/**
* Get title
*
* @return string
*/
public function getTitle()
{
return $this->title;
}
}
DataFixtures/ORM/LoadCategories.php
私はさまざまな方法で試しましたが、まだ動作していません。私に教えてください、私は間違って何をしていますか?
UPD: 私のエラーは、次のとおりです。
は[教義\ DBAL \例外の\ NotNullConstraintViolationException]
(deals_category_lang(CATID、LANG、タイトル)VALUES。INSERT INTO」を実行中に例外が発生しました、? ?、?)」のparams [ヌル、 "EN"、 "食品・飲料"]と:
SQLSTATE [23000]:整合性制約違反:1048列 'CATID' は[教義\ DBAL \ドライバーnullにすることはできません\ P DOException]
SQLSTATE [23000]:整合性制約違反:1048列 'CATIDは' にすることはできませんヌルPDOException]
SQLSTATE [23000]:整合性制約違反:1048列 'CATIDは' にすることはできませんヌル
私はコマンドラインから備品を実行しています:
php bin/console doctrine:fixtures:load --append
あなたはすべてのエラーを取得していますか?どのように動作しませんか? – Phil
あなたが得るエラーは自明ですが、あなたのcatidはnullです –
エラーに関する情報が更新されました。 – montie