3

Stack Overflow や Web 上の他の場所で文字通り大量の質問/回答を見てきましたが、この問題の解決策が見つかりません。

問題を説明する前に、次のことを説明します。

  • 最小限の属性とメソッドのみを持つようにエンティティを削除しました
  • ドクトリンクエリキャッシュ/メタデータキャッシュをクリアしました
  • スキーマを削除して再作成しました
  • 私のスペルをチェックしました

次の 2 つのエンティティがあります。

<?php
namespace Docker\ApiBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 */
class Source
{
  /**
   * @ORM\Id
   * @ORM\Column(type="integer")
   * @ORM\GeneratedValue(strategy="AUTO")
   */
  private $id;

  /**
   * @ORM\Column(type="integer")
   * @ORM\ManyToOne(targetEntity="Project",inversedBy="sources")
   * @ORM\JoinColumn(referencedColumnName="id")
   */
  private $project;

}


<?php
namespace Docker\ApiBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 */
class Project
{
  /**
   * @ORM\Id
   * @ORM\Column(type="integer")
   * @ORM\GeneratedValue(strategy="AUTO")
   */
  private $id;

  /**
   * @ORM\OneToMany(targetEntity="Source", mappedBy="project")
   */
  private $sources;

  public function __construct() {
    $this->sources = new ArrayCollection();
  }

  public function getSources() {
    return $this->sources;
  }
}

したがって、多くの「ソース」が 1 つの「プロジェクト」に属することができます。

私のコントローラーには次のものがあります:

$em = $this->getDoctrine()->getManager();
$project = $em->find('Docker\ApiBundle\Entity\Project', 1);
$sources = $project->getSources()->toArray();

私は多くのことを試しましたが、私はいつも得る:

Notice: Undefined index: project in /.../www/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line 1577

私が言うように、これについて多くの質問があることは知っていますが、受け入れられた回答のどれも私の問題を解決しません.

これは Doctrine2 を使用する上で非常に基本的なことのように見えるので、何が間違っているのかわかりません - 本当に明らかなことかもしれません。

どんな助けでも大歓迎です。

4

2 に答える 2

5

あなたが持っている:

/**
* @ORM\Column(type="integer")
* @ORM\ManyToOne(targetEntity="Project",inversedBy="sources")
* @ORM\JoinColumn(referencedColumnName="id")
*/
private $project;

削除する:

@ORM\Column(type="integer")

注釈から。

于 2013-06-19T12:18:50.543 に答える