2017-04-20 93 views
1

我試圖創建產品和用戶之間的關係。一個用戶有許多產品和許多產品=> 1個用戶。問題是當我將表格添加到表「產品」列user_id = NULL。爲什麼user_id列是NULL?

這是我在產品實體關係:

/** 
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\User", inversedBy="products") 
* @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
*/ 
private $user; 

和用戶實體:

/** 
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Product", mappedBy="user") 
*/ 
private $products; 

爲什麼列user_id是總是空?以下是用於堅持產品的代碼。

/** 
* @Route("/products/add", name="create_products") 
* @Security("has_role('ROLE_USER') or has_role('ROLE_EDITOR') or has_role('ROLE_ADMIN')") 
* @param Request $request 
* @return \Symfony\Component\HttpFoundation\Response 
*/ 
public function createProductAction(Request $request) 
{ 
    $product = new Product(); 

    $form = $this->createForm(ProductType::class, $product); 

    $form->handleRequest($request); 

    if($form->isSubmitted() && $form->isValid()) { 

     /** @var UploadedFile $file */ 
     $file = $product->getImageForm(); 

      $filename = md5($product->getName()); 

      $file->move(
       $this->get('kernel')->getRootDir() . '/../web/images/products/', 
       $filename 
      ); 


      $product->setImage($filename); 

     $em = $this->getDoctrine()->getManager(); 
     $em->persist($product); 
     $em->flush(); 

     $this->redirectToRoute('products'); 

     return $this->redirectToRoute('products'); 
    } 

    return $this->render('products/create.product.html.twig', array(
     'productForm' => $form->createView() 
    )); 
} 
+0

你是如何保存這些?你的表單/控制器是什麼樣的? – Chausser

+0

請問您如何堅持這兩個實體的代碼? – manix

+0

這裏是創建產品操作https://pastebin.com/LuxTDLip其實,即時通訊不知道如何保存user_id到控制器 – Vnkat19

回答

0

您還沒有在您的Product對象中使用您的setter來設置控制器中的用戶。那就是問題所在。

您將需要使用的setter像這樣:

$product->setImage($filename); 
$product->setUser($user); 


$em = $this->getDoctrine()->getManager(); 
$em->persist($product); 

上述假設你有一個setter稱爲setUser。您還需要創建用戶或確定用戶。

0

您在沒有用戶的情況下堅持產品。你應該這樣做:

$product = new Product(); 
$product->setImage($filename); 
$em = $this->getDoctrine()->getManager(); 

// here you associate the user 
$user = $em->find('\AppBundle\Entity\User', 3); // user with id 3 
$product->setUser($user); 

$em->persist($product); 
$em->flush();