【问题标题】:Update only last record in laravel table仅更新 laravel 表中的最后一条记录
【发布时间】:2020-06-22 18:45:27
【问题描述】:

我想从列中获取最后一条记录,然后更新它...只是最后一条记录

我试过这样,但它不起作用

DB::table('sales')
    ->where('id', $salesid)
    ->pluck('debt')
    ->last()
    ->update([
        'debt'. => 34
    ]);

【问题讨论】:

  • 是的,我可以找到最后一条记录...但是如何更新最后一条记录?
  • 它不必是 2 个查询,它可以在一个查询中完成。 stackoverflow.com/questions/15715922/…
  • 试试这个:$last_row = DB::table('sales')->orderBy('id', 'DESC')->first(); 然后$update = DB::table('sales')->where('id', $last_row->id)->update(['debt' => 34]);
  • 最后一条记录?我会假设一个“id”是一个唯一标识符,所以不应该超过 1 个......你是说名为 debt 的字段有很多值吗?不明白为什么“最后”或“第一”等在这里起作用
  • 不需要是2个查询;只需使用limit():DB::table('sales')->orderBy('id', 'DESC')->limit(1)->update(['debt' => 34]);。但是,如前所述,如果提供了id,orderBy() 和limit() 似乎是多余的,因为它应该是唯一的。如果不是,那就另当别论了。

标签: laravel laravel-5


【解决方案1】:

你可以通过多种方式做到这一点

$your_data=Model::orderBy('id', 'desc')->first();
$your_data->update(['column' => "value"]);


或者你可以使用

$your_data=Model::latest()->first();

然后更新

$your_data->update(['column' => "value"]);

【讨论】:

  • 我需要最后一条记录而不是第一条
  • latest()->first() 返回最后一条记录
【解决方案2】:

我认为,如果您担心性能,您应该使用直接更新数据库而不是从数据库中选择会增加额外开销,这将适用于mysql

 $updated = Model::orderBy('id', 'DESC')
     ->limit(1)
     ->update([
         "debt" => 34
     ]);

否则

DB::table('sales')
->orderBy('id', 'DESC')
->limit(1)
->update([
    'debt' => 34
])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2021-04-12
    相关资源
    最近更新 更多