Tôi bị kẹt trong này trong vài giờ.Truy vấn tùy chỉnh quản trị Sonata trong configureListFields
tôi có lớp học quản trị để liệt kê tất cả các loại và các sản phẩm trong một cột bảng có liên quan (đơn vị sản phẩm): Table example đang liên quan:
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('name')
->add('products') // Entity Product, @ORM\OneToMany
->add('ord')
;
}
Những gì tôi cần làm là giấu các sản phẩm không hoạt động từ khi niêm yết dựa trên "(boolean) product.active" nhưng tôi không thể tìm ra. Tôi biết về phương pháp "createQuery" nhưng nó không hoạt động. Khi tôi tạo ra SQL và chạy truy vấn trực tiếp nó hoạt động nhưng ở đây có vẻ như tôi có thể sử dụng ProxyQuery chỉ để lọc Category và sau đó tất cả các sản phẩm được truy vấn trong truy vấn riêng biệt (và truy vấn riêng biệt này tôi không chắc chắn làm thế nào để thay đổi).
public function createQuery($context = 'list')
{
$query = parent::createQuery($context);
$q = new ProxyQuery($query->join(sprintf('%s.products', $query->getRootAlias()), 'p')
->andWhere('p.active = :act')->setParameter('act', true));
return $q;
}
Cảm ơn bạn đã giúp đỡ bất kỳ
Cảm ơn trả lời của bạn nhưng tôi vẫn không thể làm cho nó làm việc. Có vẻ như 'query_builder' bằng cách nào đó không được sử dụng. Tôi đã thử đặt chết(); trong chức năng đó và không có gì xảy ra. –
Hãy chắc chắn bao gồm toàn bộ đường dẫn đến EntityRepository, không chỉ tên :) Nó hoạt động như một sự quyến rũ đối với tôi – Cowwando