特定のエンティティ (マスター エンティティ) のエンティティ コレクション (サブエンティティ) の位置を更新しようとしています。メソッドがフラッシュ命令を実行して更新をデータベースにプッシュするまで、すべてが機能します。
エラー メッセージは次のとおりです。
Catchable Fatal Error: Argument 1 passed to Doctrine\Common\Collections\ArrayCollection::__construct() must be an array, object given, called in \vendor\doctrine\lib\Doctrine\ORM\UnitOfWork.php on line 426 and defined in \vendor\doctrine-common\lib\Doctrine\Common\Collections\ArrayCollection.php line 46
コントローラーの方法は次のとおりです。
public function layoutAction($id, $entity, $subentity)
{
//-- Get Repository for master entity class
$object = $this->getRepository($entity)->find($id);
$em = $this->getDoctrine()->getEntityManager();
//-- Get form datas
$datas = $this->get('request')->get('items', array());
//-- Update position for each msater entity childs of given subentity
$method = "get" . ucfirst($subentity) . "s";
foreach($object->$method() as $item){
$item->setPosition(array_search($item->getId(), $datas));
$em->persist($item);
}
//-- Push updates
$em->flush();
//-- Notification + Redirection
...
}
マスター エンティティはサブエンティティと 1 対多の関係を持ち、サブエンティティはマスター エンティティと 1 対 1 の関係を持ちます。以下のサンプル宣言:
マスター エンティティ:
<one-to-many field="subentities" target-entity="Subentity" mapped-by="masterentity" />
サブエンティティ :
<one-to-one field="masterentity" target-entity="MasterEntity" inversed-by="subentities">
<join-column name="idMaster" referenced-column-name="idMaster" />
</one-to-one>
このエラーが発生する理由はわかりませんが、人間関係によるものだと思います。