2016-10-09 3 views
1

私は2つのオブジェクトを持っています:従業員と実現Symfony2はSQLリクエストを埋めます

objetの実現では、私たちは属性とタイプを持っています。 今、私はいくつかの実現をしたいくつかの雇用者を選びたいと思う。

$sql = "SELECT DISTINCT e FROM MonBundle:Employe e WHERE e IN (SELECT DISTINCT r.employe FROM MonBundle:Realisation r WHERE 
r.type = :type)"; 
$query = $em->createQuery($sql); 
$query->setParameter("type",$type); 

==>Error: Invalid PathExpression. Must be a StateFieldPathExpression

+0

はなぜ単に 'MonBundleは異なるr.employeを選択:実現rをWHERE r.type =:type'が? – Matteo

+0

パスエクスプレッションが無効です。 StateFieldPathExpressionでなければなりません。 –

答えて

0

こんにちはエンティティEmployeと実現との関係は、あなたがそれをここにhttp://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-one-bidirectional

をどのように機能するかを見ることができる1対1双方向または

一対多の双方向でなければなりません

これで、すべてのリンクされたデータにアクセスすることができますあなたのエンティティを持っている

次に、クエリにJOINを使用してEmployeを1つのo R多くの実現=(あなたの2つのエンティティ間の関係の種類に依存)と型の実現を持つ従業員のリストを取得する

SELECT DISTINCT e 
FROM MonBundle:Employe e 
JOIN e.realisation r 
WHERE r.type = :type 

ような何か?

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#joins

+0

オブジェクト名にフィールド名の実現がありません –

+0

@kromeようこそスタックオーバーフローです。 「JOIN」が何をし、どのように働くのかを説明するのに役立つかもしれないことを念頭に置いてください。質問の質問者がそれをより効果的に適用するのに役立ちます。あなたの答えの中のコードだけからこのJOINが何をするのか分かりません。 – orangething

+0

そんなにありがとう –

関連する問題