Symfony3查询Bulder?

时间:2017-08-19 18:38:23

标签: symfony doctrine-orm

我是symfony 3的新手,我想了解如何根据找到的结果从表中获取值。 让我解释一下:

根据下面的低音图,每个“产品”都有一个“poids”(nom)和一个“valeur”(valeur)

查看bdd:

view bdd

我想在我的购物篮视图中根据当然的数量显示重量的总值。 例如,我有一个2kg的产品和另一个0.300kg的产品,它必须产生重量表中2.3kg的值。 我不能执行这个“功能”。 这是我的PanierController。

 class PanierController extends Controller
{
    public function supprimerAction(SessionInterface $session, $id)
    {
    $panier = $session->get('panier');

    if (array_key_exists($id, $panier))
    {
        unset($panier[$id]);
        $session->set('panier', $panier);
        $this->addFlash('success', 'Article supprimé avec succès !');
    }

    return $this->redirect($this->generateUrl('panier'));
}
public function ajouterAction(SessionInterface $session, Request $request, $id)
{

    if (!$session->has('panier')) {
        $session->set('panier', array());
    }
    $panier = $session->get('panier');

    if (array_key_exists($id, $panier)) {
        if ($request->query->get('qte') != null) {
            $panier[$id] = $request->query->get('qte');
        }
        $this->addFlash('success', 'Quantité modifié avec succès !');
    } else {
        if ($request->query->get('qte') != null) {
            $panier[$id] = $request->query->get('qte');
        } else {
            $panier[$id] = 1;
        }
        $this->addFlash('success', 'Article ajouté avec succès !');
    }

    $session->set('panier', $panier);


    return $this->redirect($this->generateUrl('panier'));
}

public function panierAction(SessionInterface $session)
{

    if (!$session->has('panier')) {
        $session->set('panier', array());
    }

    $em = $this->getDoctrine()->getManager();
    $produits = $em->getRepository('EcommerceBundle:Produits')->findArray(array_keys($session->get('panier')));



    return $this->render('EcommerceBundle:Default:panier/layout/panier.html.twig', array('produits' => $produits, 'panier' => $session->get('panier')));
}

public function livraisonAction()
{
    // servira pour l'adresse de livraison
    return $this->render('EcommerceBundle:Default:panier/layout/livraison.html.twig');
}

public function validationAction()
{
    return $this->render('EcommerceBundle:Default:panier/layout/validation.html.twig');


 }
}

如果您需要更多信息,请告诉我们。

2 个答案:

答案 0 :(得分:0)

@JasonRoman,

那就是说? 例如,要在Shopping Cart视图中显示产品,我使用Shopping CartController中的ProductsRepository:

    public function panierAction(SessionInterface $session)
{

    if (!$session->has('panier')) {
        $session->set('panier', array());
    }

    $em = $this->getDoctrine()->getManager();
    $produits = $em->getRepository('EcommerceBundle:Produits')->findArray(array_keys($session->get('panier')));



    return $this->render('EcommerceBundle:Default:panier/layout/panier.html.twig', array('produits' => $produits, 'panier' => $session->get('panier')));
}

ProductsRepository:

class ProduitsRepository extends EntityRepository
{
    public function findArray($array) 
    {
        $qb = $this->createQueryBuilder('u')
                ->select('u')
                ->where('u.id IN (:array)')
                ->setParameter('array', $array);
        return $qb->getQuery()->getResult();
    }
}

结果在购物车视图中是正确的。 在篮子视图中,如果我让他告诉我篮子里的总重量,我会这样做:

{% Extends "::layout/layout.html.twig"%}
{% Set totalHT = 0%}
{% Set livraisonHT = 0%}
{% Block body%}

{% Set livraisonHT = livraisonHT + (panier[produit.id] * produit.poids.nom)%}

livraisonHT给了我总重量

另一方面,我不知道要写什么函数,以便它显示相应的值。 目前我在我的篮子里: 一种产品为2kg,另一种产品为0.3kg

{% Set livraisonHT = livraisonHT + (panier[produit.id] * product.poids.non)%}

答案 1 :(得分:0)

我想我已经把手指放在了什么东西上, 在我的购物篮视图中,如果我进行转储(产品),我会得到:

array:1 [▼
0 => Produits {#546 ▼
-id: 5
-image: Media {#445 ▶}
-gamme: Gamme {#396 ▶}
-marque: Marque {#467 ▶}
-tva: Tva {#563 ▼
  +__isInitialized__: true
  -id: 11
  -multiplicate: 0.83333333333334
  -nom: "TVA 20 %"
  -valeur: 20.0
   …2
}
-poids: Poids {#670 ▼
  +__isInitialized__: false
  -id: 209
  -nom: null
  -valeur: null
   …2
}
-categorie: Categories {#684 ▶}
-nom: "Phantom 4 Standard"
-resume: "le résumé"
-description: "La description longue"
-details: "details à voir"
-prix: 1000.0
-disponible: true
}
]

在“重量”中,名称和值是零?