2

我有三张桌子:

Clients: (id, name, ...)

Files: (id, filename, type, data)

并加入表:

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

在 php 类客户端中,我想访问所有客户端的文件,但只能访问尚未删除的文件(在 sql 中,WHERE deleted_at IS NULL)

现在我有这样的代码(在实体类客户端中),它选择所有(甚至已删除)文件:

/**                                                                         
* @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 回答