1

私のSymfony2アプリでは、人々はWebページに公開されるテキストを書くことができます。新しいテキストを書くオプションがあり、それが属するウェブページを選択する必要があります。

私が達成したいのは、このWebページのリストには、まだテキストのみが含まれていないWebページが表示されているということです。そうしないと、既存のテキストを置き換えることになります。

だから私は私のフォームタイプでこのようなものを書きたいと思います:

$qb->select('wp')
->from('MyBundle:Webpage', 'wp')
->where('wp.webtexts is null')
->orderBy('wp.id');

この問題は、「wp.webtextsisnull」ステートメントの周辺で発生します。これは(完全に機能している)多対多の関係であり、ここに関係がないかどうかをテストしたいと思います。私が受け取るエラーは次のとおりです。

[セマンティカルエラー]行0、列70'webtexts is null':エラー:無効なPathExpression。StateFieldPathExpressionまたはSingleValuedAssociationFieldが必要です。

Webテキストとは関係なく、Webページをクエリするにはどうすればよいですか?

追加した:

関係の量をどのように数えることができますか?この表記法:

 $qb->where($qb->expr()->count('wp.webtexts < 1'))

...私に与えます:

[構文エラー]0行目、85列目:エラー:Doctrine \ ORM \ Query \ Lexer :: T_CLOSE_PARENTHESISが必要ですが、'<'を取得しました

4

2 に答える 2

4

webtextsオブジェクトに対してチェックしようとしている場合は、webtextsオブジェクトではなくwebtextsidフィールドにクエリを実行する必要があります。Doctrineはまだ一日の終わりにSQLを書き込もうとしており、SQLではフィールドをクエリする必要があります。

$qb->select('wp')
    ->from('MyBundle:Webpage', 'wp')
    ->leftJoin('wp.webtexts', 'wt')
    ->where('wt.id IS NULL')
    ->orderBy('wp.id');
于 2013-01-08T13:03:48.497 に答える
1

このような:

$em->createQuery('SELECT wp FROM MyBundle:Webpage wp LEFT JOIN wp.webtexts wt WHERE wt.id IS NULL ORDER BY wp.id');

テキストと結合されているかどうかに関係なくWebページを取得し、テキストと関係のあるWebページを削除します...したがって、関係のないWebページがあります。

于 2013-01-08T13:18:57.070 に答える