Как получить сущность и счет в одном запросе? - PullRequest
0 голосов
/ 02 октября 2018

Я создал следующий репозиторий и метод.Метод делает то, что вы ожидаете, за исключением одной вещи.Он не может вернуть оба значения ->select('ol') и ->select('count(ol.product) as totalProducts').Как только я включу ->select('ol'), он будет игнорировать счет.

class OrderLineRepository
{
    // ...

    public function getOpenOrders()
    {
        $qb = $this->createQueryBuilder('ol');
        $orders = $qb
                ->select('count(ol.product) as totalProducts')
                ->select('ol')
                ->where('BIT_AND(ol.flags, 3) = 2')
                ->groupBy('ol.orderId')
                ->setMaxResults(100)
                ->getQuery()
                ->getResult()
            ;

            return $orders;
    }

    // ...
}

Я все еще на ранних стадиях освоения Symfony, и это может быть довольно глупым вопросом.Но это все еще вопрос, с которым я сейчас сталкиваюсь.Кто-нибудь может мне помочь?

Обновление

С помощью RiggsFolly теперь я получаю следующий результат, используя ->addSelect(...) вместо ->select(...).

array:10 [
    // ...
    array:2 [
        0 => OrderLine {
            id: 8068005
            product: Product {#1503 ▶}
            supplier: Supplier {#1552 ▶}
            reference: Reference {#1528 ▶}
        }
        "products" => "3"
    ]
    // ...
]

В идеале я хотел бы получить это так:

array:10 [
    // ...
    array:2 [
        id: 8068005
        product: Product {#1503 ▶}
        supplier: Supplier {#1552 ▶}
        reference: Reference {#1528 ▶}
        "products" => "3"
    ]
    // ...
]

1 Ответ

0 голосов
/ 03 октября 2018

Я не знаю, как это связано с OrderLine и продуктами, если это так;но, возможно, вы можете создать отношение БД между ними, чтобы получить массив продуктов, связанных с вашей линией заказов.

Наконец, чтобы получить количество продуктов:

$productsNumber = count($orderLine->getProducts());  

ОБНОВЛЕНИЕ

В этом случае общее количество Продуктов будет таким же, как и общее количество строк заказов, это правильно?

Так что ... на мой взгляд, общее количество продуктов составляет , а не атрибут OrderLine;и он не должен быть частью вашего объекта OrderLine; вместо этого вы, вероятно, можете сосчитать объекты OrderLines, полученные Doctrine, и это будет ваш totalProduct.

Если посмотреть немного дальше, вы также можете создать Orderсущность, которая связана с вашим OrderLine объектом (один ко многим).Затем вы можете запросить вашу сущность Order с помощью Doctrine и сосчитать атрибут OrderLines вашей сущности Order, который будет таким же, как и все продукты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...