2012-03-21 23 views
7

Tôi đã tham gia kế thừa bảng (cho phép gọi nó là Hành động) và tôi cần lấy tất cả các bản ghi Hành động thỏa mãn điều kiện, nhưng các trường nằm trong các lớp con? Có cách nào để truy cập các trường phụ mà không cần viết Native Query, nhưng sử dụng DQL? (hoặc queryBuilder)?Doctrine2 - Sơ đồ thừa kế, truy vấn các lớp con

+0

Liệu các lĩnh vực thuộc về chỉ có một lớp học, hoặc trong vài các lớp con cho một truy vấn? –

+0

tất cả các lớp con có mối quan hệ với một lớp khác, nhưng thuộc tính luôn giống nhau. – CappY

+0

Tôi không hiểu những gì bạn đang cố gắng làm chính xác. Bạn có thể gửi một exapmle nhỏ của các thực thể và những gì bạn muốn truy vấn? –

Trả lời

0

Nếu bạn có một lớp con, bạn có thể truy vấn trực tiếp cho lớp con đó. Thuộc tính của lớp cha sẽ được tự động kế thừa (duh). Tôi tin rằng đây là những gì bạn đang tìm kiếm (dựa trên cách tôi đã thực hiện kế thừa bảng lớp).

class User{ 
    private $id; 
    private $username; 
} 

class Merchant extends User{ 
    private $bizname; 
    private $isActive; 
} 

Bây giờ theo bạn nếu tôi có để có được những thương gia tích cực, tôi sẽ làm như sau, và nó làm việc cho tôi:

$qb->select('m.bizname') 
    ->from('Merchant','m') 
    ->where('m.isActive = :flag') 
    ->setParameter('flag',TRUE); 
+1

Vâng, đó là công việc, nhưng tôi muốn -> từ ('Người dùng', 'u') -> vàWhere ('userSubClass.isActive: flag'), đó là vấn đề. – CappY

+0

Truy vấn ở trên cung cấp cho tất cả người dùng nơi người bán đang hoạt động .. Hãy suy nghĩ về điều này .. khi bạn muốn chọn người dùng nơi 'phân lớp hoạt động' .. có nghĩa là nó sẽ chỉ trả về người dùng loại lớp phụ. đó là hoạt động trả về cho bạn tất cả các thuộc tính của người dùng cũng như người bán – Broncha

+0

Có nhưng tôi có 5 lớp con khác nhau và mọi lớp con đều có điều kiện khác nhau để xác minh xem nó có đang hoạt động hay không. Ví dụ: – CappY