PHP框架中Symfony对数据库的操作

最近在研究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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员一鸣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值