2014-10-04 16 views
5

Tôi đã cố gắng tìm kiếm trực tuyến giải pháp xác định cho câu hỏi này nhưng thực sự không có giải pháp cụ thể cho người mới sử dụng ở đó.Xuất một mối quan hệ nhiều sang quản trị viên sonata

Tôi có một Entry có nhiều EntryListing. Trong EntryAdmin listMapper của tôi, tôi thoải mái có thể liệt kê các mục theo một tuyên bố đơn giản như

->add('listings') 

mà chỉ đơn giản trả về danh sách theo quy định tại EntryListing __toString() chức năng.

Có cách nào để đạt được tương tự khi xuất khẩu các dữ liệu bằng cách overiding các chức năng như sau getExportFields():

public function getExportFields() 
{ 
    return array('name','tel','email','deviceType','postedOn','createdAt','facilitator','listings'); 
} 

sự giúp đỡ của bạn sẽ được rất nhiều đánh giá cao

Trả lời

7

Có một công việc xung quanh bạn có thể thêm một thuộc tính vào thực thể của bạn, nó sẽ nhận được tất cả các danh sách liên quan đến điều đó và trong hàm getter trả về __toString() của những cái liên quan, tôi có cùng kịch bản cho các đơn hàng và cũng cần danh sách nếu các sản phẩm liên kết với đơn đặt hàng. bằng cách tạo exportProducts trong orders thực thể

protected $exportProducts; 

public function getExportProducts() 
{ 
    $exportProducts = array(); 
    $i = 1; 
    foreach ($this->getItems() as $key => $val) { 
     $exportProducts[] = $i . 
      ') Name:' . $val->getProduct()->__toString()() . 
      ' Size:' . $val->getProductsize() . 
      .../** Other properties */; 
     $i++; 
    } 
    return $this->exportProducts = join(' , ', $exportProducts); 
} 

Và để lớp quản trị i được xác định exportProducts tài sản trong getExportFields() như

public function getExportFields(){ 
    return array(
     'Products'=>'exportProducts', 
     ....// Other properties 
     ); 
} 

Trong csv tải mỗi đơn hàng chứa danh sách các sản phẩm dưới Products tế bào như dấu phẩy tách ra danh sách

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