代码之家  ›  专栏  ›  技术社区  ›  rook99

Laravel elauquent中UPDATE和ORDER BY用法不正确

  •  0
  • rook99  · 技术社区  · 6 年前

    Iam正在根据给定的ID列表更新“sortOrder”列。 例如,如果给定的ID是:

    $orderList = ['id' =>'1','id' =>'5','id' =>'3']
    ID of '1' => 'sortOrder column'  = 1
    ID of '5' => 'sortOrder column'  = 2
    ID of '3' => 'sortOrder column'  = 3
    

    查询语句:

     $ids_array = array_pluck($orderList, 'id');
     $ids_string = implode(',', $ids_array);
    
     DB::statement(DB::raw('set @rownum=0'));
    
     $result = DB::table('requirements')
                     ->join('sections', 'sections.id', '=', 'requirements.section_id')
                     ->whereIn('id', $ids_array)
                     ->orderByRaw("FIELD(requirements.id, {$ids_string})")
                     ->update([
                         'requirements.sortOrder' => DB::raw('@rownum  := @rownum  + 1'),
                     ]);
    

    但当我尝试使用此查询进行更新时,我收到一个错误:

    SQLSTATE[HY000]: General error: 1221 Incorrect usage of UPDATE and ORDER BY
    
    0 回复  |  直到 6 年前