2

私は3つのテーブルを持っています:

Clients: (id, name, ...)

Files: (id, filename, type, data)

および結合テーブル:

Clients2Files (id, id_clients, id_files, created_at, deleted_at)

phpクラスのクライアントですべてのクライアントのファイルにアクセスしたいのですが、削除されていないファイルにのみアクセスしたいです(SQLではWHERE delete_at IS NULLを話します)

これで、(エンティティクラスClientに)次のようなコードができました。これは、すべての(削除された)ファイルを選択します。

/**                                                                         
* @ManyToMany(targetEntity="File")                                          
* @JoinTable(name="Clients2Files",                                  
*      joinColumns={@JoinColumn(name="id_clients", referencedColumnName="id")},
*      inverseJoinColumns={@JoinColumn(name="id_files", referencedColumnName="id")}
*      )                                                                    
*/                                                                          
private $files;              

WHERE deleted_at IS NULLこの教義コードに条件を追加するにはどうすればよいですか?「削除」されていないファイルのみを選択します。

4

1 に答える 1

1

追加した注釈は、実際には何も「選択」しません。彼らがすることは、あなたのオブジェクトとそれらの関係についてDoctrineに伝えることだけです。あなたがしたいことは:

$qb = $em->createQueryBuilder();
$qb->select('clients, files')
   ->from('Clients', 'clients')
   ->join('c.files', 'files')
   ->where('files.deleted_at IS NULL');

これを頻繁に実行していて、Doctrine 2.2以降を使用している場合は、フィルターを確認できます:http: //docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/filters.html

于 2012-05-30T13:02:38.033 に答える