はじめに
私はこちらのガイドに従っていますが、最後の部分で立ち往生しています: http://symfony.com/doc/2.0/cookbook/security/entity_provider.html
アカウント テーブルからクエリを実行し、グループ テーブルにも参加しようとしています。これは、中間テーブル account_group との多対多の関係です。
account Table Fields: id, firstName, and email
account_group Table Fields: account_id and group_id
group Table Fields: id, name, and role
問題
ここに私のDQLがあります:
SELECT a.firstName, g.role
FROM WikiRosterMainBundle:Account a
LEFT JOIN a.groups g
WHERE a.email = :email
内部サーバー エラーが発生します。
「SELECT a0_.id AS id0, a0_.firstName AS firstName1, a0_.email AS email3, g1_.role AS role18 FROM account a0_ LEFT JOIN account_group a2_ ON a0_.id = a2_.account_id LEFT JOIN group g1_ ON」の実行中に例外が発生しましたg1_.id = a2_.group_id WHERE a0_.email = ?' パラメータ {"1":"test@test.com"}:
SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
私が試したこと:
+ account_group テーブルへの主キーの追加 (機能しませんでした)
+ 独自の左結合 mysql クエリを作成し、それを phpmyadmin に入力する (単一の左結合で動作しますが、3 つのテーブルを結合しようとすると失敗します)
+参加/選択しているテーブルを反転
私が行った研究
mysql 5 で左結合が変更されたようです。ドキュメントとその他のスタック オーバーフローの質問を見てきました。
http://dev.mysql.com/doc/refman/5.0/en/join.html
5.0.12 の変更後の MySQL LEFT JOIN - クエリを書き直す方法
助けてくれてありがとう!