最近在研究Symfony这个框架,这里简单记录一下操作数据库的增删改查。
增
第一种方式
//获取实体管理器
$entityManager = $this->getDoctrine()->getManager();
//实例化自己的实体类
$collection=new News();
$collection->setTitle("shaishaishiashi");
//标记准备持久化实体数据
$entityManager->persist($collection);
//写入到数据库中
$entityManager->flush();
$data = array(
"code" => 200,
"message" => "数据返回成功"
);
return new JsonResponse($data);
第二种方式
//sql语句添加
$entityManager = $this->getDoctrine()->getManager();
$conn = $entityManager->getConnection();
$query = $conn->prepare("INSERT INTO news (title) VALUES ('哈哈哈')");
$query->execute();
$data = array(
"code" => 200,
"message" => "数据返回成功"
);
return new JsonResponse($data);
如何判断数据是否插入成功,这里我给出两种方案,第一种是,如果插入成功,那么对应的id肯定不为空,可以根据id来判断,或者根据id看是否能在数据库中查询到对应的数据来判断。
删
第一种方式
$entityManager = $this->getDoctrine()->getManager();
//查找对应的实体类
$repository = $entityManager -> getRepository(News::class);
$products = $repository->find(1);//根据条件进行删除
$entityManager->remove($products);
$entityManager -> flush();
$data = array(
"code" => 200,
"message" => "删除成功"
);
return new JsonResponse($data);
第二种方式
//sql语句删除
$entityManager = $this->getDoctrine()->getManager();
$conn = $entityManager->getConnection();
$query = $conn->prepare("delete from news where id=6");
$query->execute();
$data = array(
"code" => 200,
"message" => "删除成功"
);
return new JsonResponse($data);
改
第一种方式
$entityManager = $this->getDoctrine()->getManager();
//根据id查找对应的实体类
$product = $entityManager->getRepository(News::class)->find(6);
if (!$product) {
//有
}else{
//没有
}
$product->setTitle("8888");
$entityManager->flush();
$data = array(
"code" => 200,
"message" => "数据修改成功"
);
return new JsonResponse($data);
第二种方式
//更改
$entityManager = $this->getDoctrine()->getManager();
$conn = $entityManager->getConnection();
$query = $conn->prepare("UPDATE news SET title='我' WHERE id=8");
$query->execute();
$data = array(
"code" => 200,
"message" => "数据更改成功"
);
return new JsonResponse($data);
查
第一种方式
$repository = $this->getDoctrine()->getRepository(News::class);
$products = $repository->findAll();//查询全部
$products = $repository->find()//根据id 查询对应的数据
$product = $repository->findOneBy(array('name' => 'Keyboard', 'price' => 19.99));//根据条件查询
$products = $repository->findBy(array('name' => 'Keyboard'),array('price' => 'ASC'));//多个条件
第二种方式
//createQueryBuilder方式
//查询全部
$repository = $this->getDoctrine()->getRepository(News::class);
$query = $repository->createQueryBuilder('news')
->getQuery();
$products = $query->getResult();
//查询单个
$repository = $this->getDoctrine()->getRepository(News::class);
$query = $repository->createQueryBuilder('news')
->where('news.id =:id')
->setParameter("id","6")//->orderBy('p.price', 'ASC')
->getQuery();
$products = $query->getResult();
第三种方式
//sql语句进行查询
$entityManager = $this->getDoctrine()->getManager();
$conn = $entityManager->getConnection();
$query = $conn->prepare("select * from news");
$query->execute();
$result = $query->fetchAll();
补充:
接收传递数据:
$ids=$request->get("id");
返回json数据
$data = array(
'code' => 200,
'msg' => '请求成功',
'data' => $result
);
return new JsonResponse($data, Response::HTTP_OK);
查询遇到实体类数据返回为空,给实体类实现JsonSerializable
public function jsonSerialize()
{
$normalized = array(
'title' => $this->title,
'id' => $this->id,
);
return $normalized;
}