ドキュメントのこのセクションで説明されているすべてのことを読んで試しましたが、これを機能させることができません。これはエンティティのコンストラクタです:
public function __construct()
{
$this->targets = new ArrayCollection();
$this->targetBrand = new ArrayCollection();
}
そして、使用をバイパスしようとしまし__construct: false
たが、このエラーが発生しました:
[Symfony\Component\Yaml\Exception\ParseException] 11行目(" name: "付近)で解析できません。
これは、フィクスチャがどのように見えるかです:
\PDI\PDOneBundle\Entity\Brand:
# 3 Brand per Company
brand{1..3}:
__construct: false
name: <name()>
generic_name: <name()>
logo_url: <imageUrl(128,128)>
description: <paragraph()>
isi_required: <boolean(35)>
isi_text: <realText()>
isi_pdf_url: <url()>
pi_required: <boolean(35)>
pi_text: <realText()>
pi_pdf_url: <url()>
inactive: <boolean(35)>
company: @company*
createdAt: <dateTimeThisYear()>
updatedAt: <dateTimeThisYear()>
設定しないと__construct
、エラーは次のようになります。
[Symfony\Component\Debug\Exception\ContextErrorException] キャッチ可能な致命的なエラー: Doctrine\Common\Collections\ArrayCollection::__construct() に渡される引数 1 は、/var/www/html/ で呼び出される、指定されたオブジェクトの配列型でなければなりませんreptooln_admin/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php 行 555 で定義済み
なにが問題ですか?フィクスチャをどのようにセットアップすればよいですか?
編集:
私はこれを見つけましたが、セットアップしようとしているフィクスチャでそのアプローチをどのように使用できますか?アドバイスをもらえますか?
編集1:
エンティティにBrand
マップされ、エンティティによって反転されるため、少し混乱しています。以下のエンティティを参照してください。TargetBrand
TargetBrand
Brand
class Brand
{
// other class properties
/**
* @ORM\OneToMany(targetEntity="TargetBrand" , mappedBy="brand")
*/
protected $targetBrand;
protected $targets;
public function __construct()
{
$this->targets = new ArrayCollection();
$this->targetBrand = new ArrayCollection();
}
// other class methods
public function getTargets()
{
$targets = new ArrayCollection();
foreach ($this->targetBrand as $target) {
$targets[] = $target->getTarget();
}
return $targets;
}
public function setTargets($targets)
{
foreach ($targets as $target) {
$targetBrand = new TargetBrand();
$targetBrand->setBrand($this);
$targetBrand->setTarget($target);
$this->addTargetBrand($targetBrand);
}
}
public function addTargetBrand($targetBrand)
{
$this->targetBrand[] = $targetBrand;
}
public function removeTargetBrand($targetBrand)
{
return $this->targetBrand->removeElement($targetBrand);
}
}
class TargetBrand
{
/**
* @var int
*
* @ORM\Column(type="integer")
*/
protected $priority;
/**
* @var Target
*
* @ORM\ManyToOne(targetEntity="Target", inversedBy="targetBrand")
* @ORM\JoinColumn(name="targets_id", referencedColumnName="id")
* */
protected $target;
/**
* @var Brand
*
* @ORM\ManyToOne(targetEntity="Brand", inversedBy="targetBrand")
* @ORM\JoinColumn(name="brands_id", referencedColumnName="id")
* */
protected $brand;
public function setPriority($priority)
{
$this->priority = $priority;
return $this;
}
public function getPriority()
{
return $this->priority;
}
public function setTarget(Target $targets = null)
{
$this->target = $targets;
return $this;
}
public function getTarget()
{
return $this->target;
}
public function setBrand(Brand $brand)
{
$this->brand = $brand;
return $this;
}
public function getBrand()
{
return $this->brand;
}
}
次のようにセットを使用してフィクスチャを実行している場合:
これは私が以前に言及したセットです:
$set->addFile(__DIR__.'/Territory.yml', 'yaml');
$set->addFile(__DIR__.'/Representative.yml', 'yaml');
$set->addFile(__DIR__.'/TargetBrand.yml', 'yaml');
$set->addFile(__DIR__.'/Target.yml', 'yaml');
$set->addFile(__DIR__.'/Brand.yml', 'yaml');
$set->addFile(__DIR__.'/Company.yml', 'yaml');
$set->addFile(__DIR__.'/Media.yml', 'yaml');
$set->addFile(__DIR__.'/Message.yml', 'yaml');
$set->addFile(__DIR__.'/Email.yml', 'yaml');
設定Brand
とTargetBrand
フィクスチャは次のとおりです。
代わりにこのエラーが発生しました:
[Symfony\Component\Debug\Exception\ContextErrorException] キャッチ可能な致命的なエラー: PDI\PDOneBundle\Entity\TargetBrand::setTarget() に渡される引数 1 は、PDI\PDOneBundle\Entity\Target のインスタンス、PDI\PDOneBundle\ のインスタンスでなければなりませんEntity\TargetBrand を指定し、/var/www/html/reptooln_admin/vendor/nelmio/alice/src/Nelmio/Alice/Loader/Base.php の 506 行目で呼び出して定義
\PDI\PDOneBundle\Entity\Brand:
# 3 Brand per Company
brand{1..3}:
name: <name()>
generic_name: <name()>
logo_url: <imageUrl(128,128)>
description: <paragraph()>
isi_required: <boolean(35)>
isi_text: <realText()>
isi_pdf_url: <url()>
pi_required: <boolean(35)>
pi_text: <realText()>
pi_pdf_url: <url()>
inactive: <boolean(35)>
company: @company*
createdAt: <dateTimeThisYear()>
updatedAt: <dateTimeThisYear()>
targetBrand: @targetBrand*
\PDI\PDOneBundle\Entity\TargetBrand:
# 10000 TargetBrand
targetBrand{1..1000}:
priority: <randomDigitNotNull()>
target: @target*
brand: @brand*
この場合、フィクスチャをロードする正しい順序はどれですか?
注: $targets
もう必要ないので、気にしないでください