Laravel 5.2 - 更新以前的查询

时间:2016-02-26 22:02:48

标签: php mysql laravel

我有这个问题:

Sendqueue::select()
            ->where('userID', Session::get('uid'))
            ->where('campaign', $id)
            ->where('status', 'pending')
            ->update(array(
                'status'      => 'stopped',      
                ));

问题在于,进行更新所需的记录数量大约需要15分钟才能完成。

我想将其拆分,以便选择和更新查询是单独的实体。有点像这样:

$pending = Sendqueue::select()
            ->where('userID', Session::get('uid'))
            ->where('campaign', $id)
            ->where('status', 'pending')
            ->get();

$pending->update(array(
            'status'      => 'stopped',      
            ));

我该怎么做呢?或者有更简单的方法吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

我没想到,我想出了答案。我必须像这样在foreach中运行第二部分:

$records = Sendqueue::select()
            ->where('userID', Session::get('uid'))
            ->where('campaign', $id)
            ->where('status', 'pending')
            ->get();

foreach ($records as $record) {
        DB::table('sendqueue')
            ->where('ID', $record->ID)
            ->update(['status' => 'stopped']);
}

答案 1 :(得分:0)

protected $table="user";
public function updateUser($id,$username)
{  
  $resultData = array();
  $updateArray    =   array('user_name'=>$username);
  $update=DB::table('user')
            ->where('user_id', $id)
            ->update($updateArray);


  return $resultData['status'] = true;          
}

答案 2 :(得分:-1)

$my_id = preg_replace ('#[^0-9]#', '', $request->id);
        if (! empty ($my_id)) {
            $this->c->where ('id', $my_id )->update ( [
                    'first_name' => $request->get ( 'first_name' ),
                    'last_name' => $request->get ( 'last_name' ) ,
                    'phone' => $request->get ( 'phone' )
            ] );`enter code here`
            \Session::flash ('message', 'Update Successful');
            return redirect ('customer');
        }
        $this->edit ();

http://developer.e-power.com.kh/update-query-in-laravel-5-2/