OneToMany 関係に Perfil と IPerfil という 2 つのエンティティがあります。Perfil には、複数の IPerfil を関連付けることができます。
>
class Perfil
{
/**
* @var integer $id
*
* @ORM\Column(name="id_perfiles", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="P360.perfiles_seq")
* @ORM\OneToMany(targetEntity="IPerfil", mappedBy="id")
*/
private $id;
そしてもう1つは:
>
class IPerfil
{
/**
* @var integer $id
* @ORM\ManyToOne(targetEntity="Perfil")
* @ORM\JoinColumn(name="id_perfiles", referencedColumnName="id_perfiles", onDelete="CASCADE")
*/
protected $id;
IPerfil から Perfil への遅延ロードはできますが、他の方向 (Perfil から IPerfil へ) ではできませんが、IPerfil または createQueryBuilder()->setPameter で DQL を実行できない場合、Symfony は常に次のようなエラー:
[Semantical Error] 行 0、列 9 付近の 'id_perfiles FROM': エラー: 無効なパス式。StateFieldPathExpression である必要があります。
フィールド ID を
@ORM\Column(name="id_perfiles", type="integer")
その後、エンティティで DQL を構築できますが、関係は機能しなくなります。
私はここで迷子になっています...関係の定義に何かが欠けているようですが、手がかりがありません。
ヒントをお寄せいただきありがとうございます。
編集
私が使用する場合:
$entities=$em->getRepository('usuariosBundle:IPerfil')->findAll(array());
エラーは出ませんが、結果をフィルタリングして並べ替える必要があります。
$entities=$em->getRepository('usuariosBundle:IPerfil')->findBy(array(),array('id' => 'asc', 'descripcion' => 'asc'));
認識されないフィールド: id
$query=$em->getRepository('usuariosBundle:IPerfil')->createQueryBuilder('p')
->orderBy('id', 'ASC')
->getQuery();
$entities = $query->getResult();
* [セマンティカル エラー] 行 0、列 60、'id ASC' 付近: エラー: 'id' が定義されていません。*
$entities = $this->get('doctrine')->getEntityManager()->createQuery('SELECT p.id FROM usuariosBundle:IPerfil p ')->getResult();
[セマンティカル エラー] 行 0、列 9 付近の 'id FROM usuariosBundle:IPerfil': エラー: 無効なパス式。StateFieldPathExpression である必要があります。