Doctrineは初めてで、JOINを機能させようとしています。
私はしばらくの間これに頭を悩ませてきました、そしてゆっくりと全体像をつかみ始めています-それは私が思っていたほど単純ではありません。
対応するSQLテーブルを持つ2つのエンティティがあります。リンクされた両方からデータを返すクエリを実行しようとしています。参加する。
これをストレートSQLで実行すると、次のようになります。
SELECT *
FROM mail_links a
INNER JOIN mail_msgs b
ON a.msg_id = b.id
私はこれを機能させるためにいくつかのことを試みました:
$query = $this -> doctrine -> em -> createQuery ("SELECT a FROM ORM\Dynasties2\Maillinks a JOIN ORM\Dynasties2\Mailmsgs b ON a.msgId = b.id");
もちろんそれはうまくいきませんでした。これは、エンティティをクラスとして作成することに依存していること、または少なくともいくつかの例が行っているように見えることに気づきました。
そして、それは私が完全に失われたところです。
それらのエンティティをクラスにする必要があるのは正しいですか?このJOINに必要なクラスを作成する方法を理解するのに役立つ、これの完全なコード例(CIを使用)はありますか?
編集:
クラスを設定していることに気づきました。それが私の実体です。
では、どうすればこれを機能させることができますか?
$query = $this -> doctrine -> em -> createQuery ("SELECT a FROM ORM\Dynasties2\Maillinks a JOIN ORM\Dynasties2\Mailmsgs b ON a.msgId = b.id");
次のエラーが発生します。
致命的なエラー:キャッチされない例外'Doctrine \ ORM \ Query \ QueryException' with message'[Semantical Error] line 0、col 70 near' b ON a.msgId':Error:Identification Variable ORM \ Dynasties2 \ Mailmsgs used in join path expression but以前は定義されていませんでした。」/PATH/applicationFolder/libraries/Doctrine/ORM/Query/QueryException.php:47スタックトレース:#0 /PATH/applicationFolder/libraries/Doctrine/ORM/Query/Parser.php(413):Doctrine \ ORM \ Query \ QueryException :: semanticalError('line 0、col 70 ...')#1 /PATH/applicationFolder/libraries/Doctrine/ORM/Query/Parser.php(914):Doctrine \ ORM \ Query \ Parser-> semanticalError( '識別...')#2 /PATH/applicationFolder/libraries/Doctrine/ORM/Query/Parser.php(1567):Doctrine \ ORM \ Query \ Parser->