【发布时间】:2019-05-17 13:28:08
【问题描述】:
我有一个关系,其中有一个名为“Category”的表和另一个名为“Beer”的表,当我尝试使用 api 给我的类别创建新啤酒时一个错误。
啤酒控制器
/**
* @Route("/", methods={"POST"})
* @param Request $request
* @return Response
*/
public function saveAction(Request $request){
$data_arr = json_decode($data = $request->getContent(),true);
$beer = new Beer();
$category = new Category();
$beer->getCategory();
$form = $this->createForm(BeerType::class, $beer);
$form->submit($data_arr);
$beer->setCategory($category);
$doctrine = $this->getDoctrine()->getManager();
$doctrine->persist($category);
$doctrine->merge($beer);
$doctrine->flush();
return new JsonResponse([$data_arr], 200);
}
BeerEntity
/**
* Beer
*
* @ORM\Table(name="beers")
* @ORM\Entity
*/
class Beer
{
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Category", inversedBy="beer", cascade={"persist", "remove" }))
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
private $category;
/**
* @return mixed
*/
public function getCategory()
{
return $this->category;
}
/**
* @param mixed $category
*/
public function setCategory($category)
{
$this->category = $category;
}
}
类别实体
class Category
{
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Beer", mappedBy="category")
*/
private $beer;
public function __construct()
{
$this->beer = new ArrayCollection();
}
}
BeerType(form)
class BeerType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array
$options)
{
$builder->add('name')
->add('description')
->add('price')
->add('slug')
->add('type')
->add('abv')
->add('brewedby')
->add('createdat')
->add('updatedat')
->add('category', EntityType::class, [
'class' => Category::class
])
;
console.log(error)
"执行'INSERT INTO category (name)时发生异常 VALUES (?)' 带参数 [null]" SQLSTATE [23000]:违反完整性约束:1048 列“名称” 不能为空”
正如问题本身所说,当我尝试创建具有类别(已创建)的新啤酒时,控制器尝试创建新类别,但我想创建已创建类别的新啤酒。
编辑:
当我通过 api 从 beer 发送数据时,category 发送正常,但是当我尝试使用 get 推送 beer 时,category 不再是 beers。
后啤酒
{abv: 7, brewedby: "Péttrin Miranda Souza", category_id: "7", description: "Descrição da cerva",…}
abv: 7
brewedby: "Péttrin Miranda Souza"
category_id: "7"
description: "Descrição da cerva"
name: "Beer"
price: "25"
slug: "mugger"
type: "Cerveja bavaria"
喝啤酒
5: {id: 19, name: "Beer", description: "Descrição da cerva", price: 25, slug: "mugger",…}
abv: 7
brewedby: "Péttrin Miranda Souza"
createdat: "2019-05-20T09:28:08-03:00"
description: "Descrição da cerva"
id: 19
name: "Beer"
price: 25
slug: "mugger"
type: "Cerveja bavaria"
updatedat: "2019-05-20T09:28:08-03:00"
【问题讨论】:
-
阅读错误信息,然后问问自己类别名称是在哪里设置的。提示:不是。
-
现在多注意听上去好像我很傻xD。