方法保存在lockForUpdate Laravel 5.1之后不存在 在悲观锁定后,Laravel无法将数据保存到DB

方法保存在lockForUpdate Laravel 5.1之后不存在 在悲观锁定后,Laravel无法将数据保存到DB,laravel,laravel-5,laravel-5.1,Laravel,Laravel 5,Laravel 5.1,在使用Laravel 5.1的save方法时,我面临无法将数据更新到db的问题 我试图用锁定来更新数据,以避免并发数据,下面是我的代码 请帮帮我 namespace App\Model; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\DB; class Recharge extends Model { public function processSuccess($orderId, $type,

在使用Laravel 5.1的save方法时,我面临无法将数据更新到db的问题

我试图用锁定来更新数据,以避免并发数据,下面是我的代码

请帮帮我

namespace App\Model;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
class Recharge extends Model
{
public function processSuccess($orderId, $type, $amount) {
        $query = [
            ['status', '<=', 1],
            ['order_abm', '=', $orderId],
            ['type', '=', $type],
            ['amount', '=', $amount],
        ];

        \DB::beginTransaction();
        $concur_up = Recharge::where($query)->lockForUpdate()->get();
        $concur_up->status = 5;
        $concur_up->amounted = $amount;
        $concur_up->date    = time();
        $res =$concur_up->save();
        if (!$res) {
            return "fail";
        }
        \DB::commit();
        return true;
    }
}
namespace-App\Model;
使用Illumb\Database\Schema\Blueprint;
使用Illumb\Support\Facades\DB;
类模型
{
公共函数processSuccess($orderId、$type、$amount){
$query=[

['status','您正在扩展模型,但没有在代码中使用该模型。请尝试在标题中添加
use illumb\Database\elount\model;
。因此,您的代码如下所示:

namespace App\Model;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;

class Recharge extends Model
{
    // Your code....
}

我想这将解决您的问题。

您正在扩展模型,但没有在代码中使用该模型。请尝试在标题中添加
use Illumb\Database\Eloquent\model;
。因此,您的代码如下所示:

namespace App\Model;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;

class Recharge extends Model
{
    // Your code....
}
我想这将解决您的问题。

方法将始终返回一个
集合
,即使该
集合中只有一条记录

如果您知道where子句被设计为只返回一条记录,或者您只关心它返回的第一条记录,那么只需将
->get()
更改为
->first()
,这将
$concur\u up
设置为
充值
模型实例,而不是
集合
方法将始终返回
集合
,即使该
集合中只有一条记录


如果您知道where子句设计为只返回一条记录,或者您只关心它返回的第一条记录,那么只需将
->get()
更改为
->first()
,将
$concur\u up
设置为
充值
模型实例,而不是
集合

我根据帕特里克斯先生和 将
->get()
更改为
->first()
之后,它就开始工作了。 这是我的密码。谢谢大家的建议

  class Recharge extends Model
    {
       public function processSuccess($orderId, $type, $amount) {
            $query = [
                ['status', '<=', 1],
                ['order_abm', '=', $orderId],
                ['type', '=', $type],
                ['amount', '=', $amount],
            ];

            \DB::beginTransaction();
            $concur_up = Recharge::where($query)->lockForUpdate()->first();
            $concur_up->status = 5;
            $concur_up->amounted = $amount;
            $concur_up->date    = time();
            $res =$concur_up->save();
            if (!$res) {
                return "fail";
            }
            \DB::commit();
            return true;
        }
    }
类模型
{
公共函数processSuccess($orderId、$type、$amount){
$query=[

['status','我根据Patricus先生和 将
->get()
更改为
->first()
之后,它就开始工作了。 这是我的密码。谢谢大家的建议

  class Recharge extends Model
    {
       public function processSuccess($orderId, $type, $amount) {
            $query = [
                ['status', '<=', 1],
                ['order_abm', '=', $orderId],
                ['type', '=', $type],
                ['amount', '=', $amount],
            ];

            \DB::beginTransaction();
            $concur_up = Recharge::where($query)->lockForUpdate()->first();
            $concur_up->status = 5;
            $concur_up->amounted = $amount;
            $concur_up->date    = time();
            $res =$concur_up->save();
            if (!$res) {
                return "fail";
            }
            \DB::commit();
            return true;
        }
    }
类模型
{
公共函数processSuccess($orderId、$type、$amount){
$query=[
['status','先生,我添加了“使用照明\数据库\雄辩\模型”;仍然无法使用保存方法。先生,我添加了“使用照明\数据库\雄辩\模型”;仍然无法使用保存方法。请。