2016-07-20 2 views
1

У меня есть следующая структура объекта: Order->RepairJobs->Parts. Part имеет свойство boolean InStock. Какой был бы самый эффективный способ узнать, содержит ли OrderRepairJobs с Parts, которых нет на складе? Должен ли я проходить через каждые RepairJob, а затем через каждые Part, или у Symfony/Doctrine есть некоторые умные функции для этого?Symfony Итерация через объекты

ответ

0

В вашем контроллере строитель добавить запрос:

$em = $this->getDoctrine()->getManager(); 
$qb = $em->createQueryBuilder(); 
$qb->select('p') 
    ->from('AppBundle:Part', 'p') 
    ->where('p.InStock = false'); 
$parts = $qb->getQuery()->getResult(); 

Pass, чтобы сделать шаблон Twig так:

return $this->render('show/orders_without_stock.html.twig', array(
    'parts' => $parts, 
)); 

Тогда в Twig итерацию:

<h2>Orders With Parts Not in Stock</h2> 

<table> 
    <tr> 
     <th>Order</th> 
    </tr> 

{% for part in parts %} 
    <tr> 
     <td>{{ part.getRepairJob.getOrder }}</td> 
    </tr> 
{% endfor %} 

</table> 

В вышеприведенном Twig, «part» - объект Part, а «getRepairJob» - это метод Part, который получает объект Repair. Это получает объект RepairJob, тогда «getOrder» - это метод RepairJob, который получает объект Order. Предполагаю, что вы настроили свои сущности и правильные аннотации ORM для сопоставления каждого из объектов. Где «RepairJobs» и «Parts» - это коллекция объектов.

Надеюсь, это имеет смысл. Но так оно и делается, и это делает вещи чрезвычайно простыми для кодирования.

Смежные вопросы