laravel 中的增量列
Increment columns in laravel
有没有办法在 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 中的给定函数来执行此操作。谢谢。任何建议都可以。
首先,根据文档,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
调用。
没有现成的功能可以做到这一点。你必须使用 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'),
]);
为了将来在 5.2 中参考,它已通过执行以下操作变得可行
您还可以指定要在操作期间更新的其他列:
DB::table('users')->increment('votes', 1, ['name' => 'John']);
LaravelEloquent模型中的增量和减量
添加到购物车选项是电子商务网站中最重要的功能之一。棘手的部分是让购物车中的商品数量显示在购物车图标上。完成这项工作的主要方法是在 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
现在 laravel 5.7 laravel query builder, increment and decrement,可以轻松完成。
Model::where('id', "rowID")->increment('columne1');`
或者您可以使用 DB
DB::table("my_table")->where('id', "rowID")->increment('column1');
$id=5;
$votes=20;
DB::table('users')
->where('id', $id)
->update([
'votes' => DB::raw('votes + '.$votes)
]);
只需使用此代码
\App\Models\User::find(1)->increment('column1'); //id = 1
或多录
\App\Models\User::where('column1','>','100')->increment('column1');
有没有办法在 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 中的给定函数来执行此操作。谢谢。任何建议都可以。
首先,根据文档,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
调用。
没有现成的功能可以做到这一点。你必须使用 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'),
]);
为了将来在 5.2 中参考,它已通过执行以下操作变得可行
您还可以指定要在操作期间更新的其他列:
DB::table('users')->increment('votes', 1, ['name' => 'John']);
LaravelEloquent模型中的增量和减量
添加到购物车选项是电子商务网站中最重要的功能之一。棘手的部分是让购物车中的商品数量显示在购物车图标上。完成这项工作的主要方法是在 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
现在 laravel 5.7 laravel query builder, increment and decrement,可以轻松完成。
Model::where('id', "rowID")->increment('columne1');`
或者您可以使用 DB
DB::table("my_table")->where('id', "rowID")->increment('column1');
$id=5;
$votes=20;
DB::table('users')
->where('id', $id)
->update([
'votes' => DB::raw('votes + '.$votes)
]);
只需使用此代码
\App\Models\User::find(1)->increment('column1'); //id = 1
或多录
\App\Models\User::where('column1','>','100')->increment('column1');