laravel中关于DB::getPdo()->lastInsertId()的证明

声明:原创文章,转载请标明出处! 

     在数据库中主键自增的情况下,有时我们需要获取本次插入的id,laravel中给我们提供了DB::getPdo()->lastInsertId()这个方法(真的很方便)!

      当我们在用的顺其自然的时候,不知道是不是想过这个id会不会“混乱”或者“冲突”,不知道这个方法是基于数据库还是客户端浏览器的,下面开始我自己的测试:

图一

图二

在浏览器分别调用这个两个方法后我们发现:图一返回实际ID,图二则一直返回0

经过测试我们可以断定DB::getPdo()->lastInsertId()这个方法不是基于数据库来获取的id;

但是,我们又考虑到线程并发的情况下,能不能保证我们拿到正确的id呢,改进方法后,下面我们继续进行测试:

 

图三

图四

我们先用postman进行传参为1测试,保证是在插入方法执行后,再在浏览器传参为2进行测试;

从测试结果我们可以看到,即使在并发的情况下,DB::getPdo()->lastInsertId()返回的id也是正常使用的,并没有“混乱”的一说!

请放心大胆的使用!

 

声明:原创文章,转载请标明出处!

写自己的代码,送给那些曾经瞧不起你的人!

                                           ----------------------lonelykeyboard

                                                                      2019.01.25
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设我们正在开发一个简单的博客应用程序,以下是一个可能的模型层代码示例: ```php class PostModel { private $db; public function __construct($db) { $this->db = $db; } public function getPosts() { $query = "SELECT * FROM posts"; $result = $this->db->query($query); return $result->fetchAll(); } public function getPostById($id) { $query = "SELECT * FROM posts WHERE id = :id"; $statement = $this->db->prepare($query); $statement->execute(['id' => $id]); return $statement->fetch(); } public function createPost($title, $content) { $query = "INSERT INTO posts (title, content) VALUES (:title, :content)"; $statement = $this->db->prepare($query); $statement->execute(['title' => $title, 'content' => $content]); return $this->db->lastInsertId(); } public function updatePost($id, $title, $content) { $query = "UPDATE posts SET title = :title, content = :content WHERE id = :id"; $statement = $this->db->prepare($query); $statement->execute(['id' => $id, 'title' => $title, 'content' => $content]); return $statement->rowCount(); } public function deletePost($id) { $query = "DELETE FROM posts WHERE id = :id"; $statement = $this->db->prepare($query); $statement->execute(['id' => $id]); return $statement->rowCount(); } } ``` 这个模型层使用了 PDO 来与数据库进行交互,实现了一些基本的增删改查操作。在一个真正的应用程序,可能会有更多的方法和复杂的查询逻辑,但这个示例应该可以帮助你理解模型层是如何工作的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值