我需要更新数据库中的所有行,以便所有行中的某个特定字段等于一个值。
假设我的数据库表是这样的:
| 标识符|资料|确认的|
| - -|- -|- -|
| 一个|某些数据|第0页|
| 2个|某些数据|一个|
| 三个|某些数据|第0页|
我想执行一个查询,将每一行的确认字段设置为1。
我可以这样做:
$rows = MyModel::where('confirmed', '=', '0')->get();
foreach($rows as $row) {
$row->confirmed = 0;
$row->save();
}
但似乎还有更好的方法?一个查询,只需要“将每行的”确认“字段设置为1”。
Laravel的Eloquent/Fluent中是否存在这样的疑问?
9条答案
按热度按时间eqoofvh91#
为了保持这个线程是最新的,您可以直接使用以下命令更新Eloquent模型的所有行:
如果使用WHERE之类的语句
如果要同时包含软删除的行
ccgok5k52#
答案很简单:一个模型代表数据库中的一行,如果他们实现了这一点,那就没有意义了。
但是,有一种方法可以做到这一点与流利:
甚至更好
5tmbdcev3#
您可以使用elquent(laravel 4)来实现此目的:
66bbxpm54#
这对我很有效:
2nc8po8w5#
更新所有行的解决方案:
1.创建一个额外的列(如'updateAll')并为mysql表中的所有行分配静态值(如'updateAll' = '1')。
1.添加名称为“forUpdateAll”且值为“forUpdateAllValue”的隐藏输入字段(仅执行特定代码以更新所有行)
1.然后为update(Request $request,$id)方法添加以下代码:
1.按如下方式设置窗体:
ktca8awb6#
模型::where('已确认',0)-〉更新(['已确认' =〉1])
ql3eal8s7#
更新任何列字段
ac1kyiln8#
使用laravel proficent更新所有字段:
方式-〉1
[状态-〉要更新的列]
方式-〉2
[状态-〉要更新的列]
zkure5ic9#
您可以执行此操作以更新所有记录。
应用程序\用户::where('id','like',' %')-〉更新(['已确认' =〉'字符串']);