Laravel 更新记录 - 这是 2 个 MySQL 调用最有效的吗?

Posted

技术标签:

【中文标题】Laravel 更新记录 - 这是 2 个 MySQL 调用最有效的吗?【英文标题】:Laravel Update Record - Is this the most efficient with 2 MySQL calls? 【发布时间】:2012-11-21 11:30:33 【问题描述】:

作为对先前帖子的跟进,我很好奇这是否是基于 POST 数据更新记录的最有效方式。

Routes.php

//COLLECT POST DATA IN $thisOrder ARRAY
//DETERMINE THAT $thisOrderID is the primary key of the record to be updated
$updateOrder = Order::find($thisOrderID)->update($thisOrder);

在我看来,这似乎是在执行 2 个查询:

1 - SELECT * FROM tblOrder WHERE orderid=$thisOrderID
2 - UPDATE SET //myvalues = $thisOrder// WHERE orderid = $thisOrderID

我知道这不是正确的语法,但它解释得很快。

我理解正确吗?使用 find() 命令正在执行 SELECT,而 update() 正在执行更新。

如果我知道 ID 就不能直接更新吗?

谢谢!

【问题讨论】:

怎么没有选择FOR UPDATE 【参考方案1】:

是的,你做得对。通过使用 ORM,您可以将自己从底层 SQL 中抽象出来。 IE。您正在为简单(可以说)和更少的代码而交易效率。这不是一件坏事,这里的抽象是完全合法的。

我不会担心这个。只要您在orderid 列上有索引。首先构建一个可以工作的应用程序,然后进行优化。除非您能解释为什么需要优化,否则无需优化。如果您需要,这种事情将是您最不担心的事情。那时,您会发现应用程序的瓶颈并进行优化。这个 ORM 可能不会成为瓶颈。

这是过度简化so here is a good read that goes into a little more detail

【讨论】:

非常感谢您的澄清......我认为这甚至会成为一个问题,但我喜欢从一开始就以最有效的方式思考/编码。 别担心! - 这只是计算成本/收益。 Laravel 非常精简,因此它是快速、轻量级代码库的良好基础。这是我目前最喜欢使用的框架——我认为 Taylor Otwell 做得很好。它酷炫的简单性使其成为框架初学者的绝佳选择,并为 Zend 资深人士带来了新鲜空气。

以上是关于Laravel 更新记录 - 这是 2 个 MySQL 调用最有效的吗?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 框架中的更新正在返回一条新记录

Laravel - 保存与更新

使用 laravel 查询生成器更新记录排名

Laravel 5 使用中的问题记录(持续更新)

如何在 Laravel 中将每个用户的数据库字段更新限制为 24 小时一次

Laravel 更新语法 - 使用数组更新记录