laravel中的增量列

ut6juiuv  于 2023-01-18  发布在  其他
关注(0)|答案(8)|浏览(147)

有没有办法在laravel中增加多个列?
让我们说:

DB::table('my_table')
->where('rowID', 1)
->increment('column1', 2)
->increment('column2', 10)
->increment('column3', 13)
->increment('column4', 5);

但这会导致:
Call to a member function increment() on integer
我只是想找到一个有效的方法来做到这一点使用给定的函数从laravel。谢谢。任何建议都可以。

xzabzqsa

xzabzqsa1#

没有现有的函数可以执行此操作。您必须使用update()

DB::table('my_table')
   ->where('rowID', 1)
   ->update([
       'column1' => DB::raw('column1 + 2'),
       'column2' => DB::raw('column2 + 10'),
       'column3' => DB::raw('column3 + 13'),
       'column4' => DB::raw('column4 + 5'),
   ]);
zaq34kh6

zaq34kh62#

Laravel口才模型的增减

添加到购物车选项是电子商务网站中最重要的功能之一。棘手的部分是让购物车中的项目数量显示在购物车图标上。主要的方法是使用Laravel上的增量和减量功能。这也有利于从购物车中添加或删除产品。实现此功能的方法是,

$user = User::find(‘517c43667db388101e00000f’);
$user->cart_count++;
// $user->cart_count--; // for decrement the count
$user->save()

另一种更简单的方法是,

$user = User::find($article_id);
$user->increment('cart_count');

这些也会起作用:

$user->increment('cart_count');// increase one count
$user->decrement('cart_count'); // decrease one count
$user->increment('cart_count',10); // increase 10 count
$user->decrement('cart_count',10); // decrease 10 count
xriantvc

xriantvc3#

现在在laravel 5.7 laravel查询生成器,增量和减量,它可以很容易地完成。

Model::where('id', "rowID")->increment('columne1');`

也可以使用DB

DB::table("my_table")->where('id', "rowID")->increment('column1');
kqlmhetl

kqlmhetl4#

为便于将来参考,在5.2中,可通过执行以下操作来实现
You may also specify additional columns to update during the operation:

DB::table('users')->increment('votes', 1, ['name' => 'John']);

图片来源:https://laravel.com/docs/5.2/queries#updates

7cjasjjr

7cjasjjr5#

首先,根据文档,increment的结果是一个整数:http://laravel.com/api/4.2/Illuminate/Database/Query/Builder.html
因此,您必须为每个增量执行一次调用:

DB::table('my_table')
->where('rowID', 1)
->increment('column1', 2);
DB::table('my_table')
->where('rowID', 1)
->increment('column2', 10);
DB::table('my_table')
->where('rowID', 1)
->increment('column3', 13);
DB::table('my_table')
->where('rowID', 1)
->increment('column4', 5);

我无法找到任何更快的解决方案,除非你想解决它与原始更新查询命令。
此外,当您使用;关闭语句并在下一行继续新的->increment调用时,示例代码可能会生成错误。

zbwhf8kr

zbwhf8kr6#

$id=5;
$votes=20;
DB::table('users')
   ->where('id', $id)
   ->update([
       'votes' => DB::raw('votes + '.$votes)
]);
eulz3vhy

eulz3vhy7#

就用这个代码

\App\Models\User::find(1)->increment('column1');  //id = 1

或多个记录

\App\Models\User::where('column1','>','100')->increment('column1');
n53p2ov0

n53p2ov08#

在最新版本的9.x中,可以使用incrementEachdecrementEach方法递增和递减多个列:

DB::table('users')->incrementEach([
    'votes' => 5,
    'balance' => 100,
]);

(摘自文件)

相关问题