मैंने इकाई उत्पाद बनाया है और जब मैं फ़ंक्शन getProduct या deleteProduct का उपयोग करना चाहता हूं और उत्पाद डेटाबेस में मौजूद नहीं है तो मैं अपवाद नहीं फेंक सकता।

मेरा कोड:

/**
 * @Route("/product/{product}", name="get_product", methods={"GET"})
 */
public function getProduct(Product $product)
{
    if(!$product){
        throw $this->createNotFoundException('Product not found');
    }

    return JsonResponse::create(['id' => $product->getId(), "name" => $product->getName(), "price" => $product->getPrice(), "description" => $product->getDescription()]);
}

/**
 * @Route("/product/{product}", name="delete_product", methods={"DELETE"})
 */
public function deleteProduct(Product $product)
{
    if(!$product){
        throw $this->createNotFoundException('Product not found');
    }

    $this->em->remove($product);
    $this->em->flush();

    return JsonResponse::create('deleted');
}
0
Daniel Woźniczak 5 जुलाई 2018, 13:56

1 उत्तर

सबसे बढ़िया उत्तर

टाइप हिंटिंग पहले से ही एक Product ऑब्जेक्ट की अपेक्षा करता है।

public function deleteProduct(Product $product)
{
    // $product is never null
    dump($product->getName());

उपरोक्त कोड नीचे से समान है

public function deleteProduct($productId)
{
    $product = $this->getDoctrine()->getRepository(Product::class)
        ->find($productId);
    // $product could be null
    if(!$product){
        throw $this->createNotFoundException('Product not found');
    }
    // $product is never null
    dump($product->getName());

चूंकि सिम्फनी पैराट्रांसफॉर्मर ऑब्जेक्ट का मिलान नहीं होने पर एक NotFoundException को फेंक देता है। अधिक गहराई से जानकारी के लिए डॉक्टर देखें

2
goto 5 जुलाई 2018, 15:14