2012-12-12 36 views
8

Tôi có hai mô hình được gọi là PersonTag. Một người có nhiều thẻ và khóa chính của thẻ là khóa tổng hợp của person_idtag (Person $person$tag trong Doctrine2)."Không có trường được ánh xạ" khi sử dụng một phần truy vấn và các phím tổng hợp trong Doctrine2

Có trường dữ liệu (BLOB) trong mô hình Tag có nhiều dữ liệu. Tôi đang thiết lập một truy vấn không yêu cầu dữ liệu từ trường đó, vì vậy tôi muốn thiết lập truy vấn không truy xuất trường đó.

Tôi đã thử với các truy vấn sau đây:

SELECT c, PARTIAL t.{tag} FROM Contact c LEFT JOIN c.tags 

Ở đây, tôi nhận được lỗi phần nào dự kiến ​​Việc lựa chọn lĩnh vực phần của lớp Tag phải chứa số nhận dạng. Không có vấn đề, tôi thêm các lĩnh vực liên hệ:

SELECT c, PARTIAL t.{contact,tag} FROM Contact c LEFT JOIN c.tags 

Nhưng bây giờ, tôi nhận được Không có lĩnh vực lập bản đồ có tên là 'tiếp xúc' trên lớp Tag.

Doctrine2 có hỗ trợ truy vấn một phần trên các phím tổng hợp không?

Đây là lớp Tag:

/** @Entity @Table(name="tag") **/ 
class Tag 
{ 
    /** @Id @ManyToOne(targetEntity="Contact",inversedBy="tags") @var Contact **/ 
    protected $contact; 
    /** @Id @Column(type="string",length=10,nullable=false) @var string **/ 
    protected $tag; 
    /** @Column(type="blob") **/ 
    protected $data; 
} 
+0

bạn đã tìm ra bất kỳ thêm về điều này lỗi @Nils? – jah

+1

@jah, thật không may, tôi đã phải tách mô hình Thẻ thành hai đối tượng để lấy các khối dữ liệu khổng lồ ra khỏi con đường. Bằng cách đó, tôi có thể chọn các đối tượng TagData khi tôi cần dữ liệu. một giải pháp rất thanh lịch, nhưng dễ hiểu và tài liệu. – Nils

Trả lời

7

Bất cứ khi nào thực hiện một lựa chọn phần bạn cần bao gồm các khóa chính của lớp bạn đang chọn từ.

Bạn chưa thực sự chi tiết thực thể "Liên hệ" của mình nhưng tôi giả sử trường khóa chính của lớp đó là "id". Nếu đây là trường hợp sau đó truy vấn sau đây sẽ đạt được những gì bạn đang sau:

SELECT c, PARTIAL t.{id, tag} FROM Contact c LEFT JOIN c.tags 

này không xuất hiện để được lập hồ sơ :(

http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html#partial-object-syntax

Các vấn đề liên quan