【问题标题】:laravel update and selectlaravel 更新和选择
【发布时间】:2017-02-22 03:53:49
【问题描述】:

我有一种情况是根据 id 更新行并返回完整的行。我可以在两个查询中完成,但我只想在一个查询中完成。我已经写了...

 $result= DB::table($this->table)
          ->whereRaw($where['rawQuery'], $where['bindParams'] ? $where['bindParams'] : array())
          ->increment($updateField);
 if($result){
      return DB::table($updateTable)
             ->select('id')
             ->where('campaign_id',$where['bindParams'])
             ->where('date',date("Y-m-d"))
             ->get();
 }else{
     throw Exception("Error in fetching data");
 }

【问题讨论】:

  • 你遇到什么样的错误?
  • 我没有收到任何错误,只是我想在单个查询中执行此操作。不想为单个函数敲击数据库两次
  • 这是不可能的,你需要访问数据库两次。
  • 您需要运行未准备好的多查询。你可以看到这个问题stackoverflow.com/questions/17630490/…
  • 我不清楚你问了什么,我想你只是想使用 where caluse 更新一个字段,并想返回你插入的内容。

标签: php mysql laravel


【解决方案1】:

我从你在问题中的评论中复制了这个:

不,如果可能,我想返回更新行的 id 或完整行

如果您想返回您正在谈论的刚刚更新的“行”的 ID。您可以使用 Eloquent 来完成此操作。

你可以使用这样的路由:

Route::put('demo/{id}', Controller@update);

然后在控制器的更新功能中,您可以获得 ID。 使用 $model = Model::find(id); 查找模型

用你得到的数据做事。 比如 $model->name = Input::get('name');

然后使用$model->save();

保存后可以做$model->id;

现在您可以取回刚刚更新的行的 ID。

参考这个问题:

Laravel, get last insert id using Eloquent

【讨论】:

  • 在我发布的链接中,也有一些方法可以使用 DB 查询生成器。
【解决方案2】:

但无论如何,它总是至少有 2 个查询(MySQL 中的一个 SELECT 和一个 UPDATE,但是你怎么做)

如果你想要一个“更干净”的方法,你可以查看Laravel Eloquent

【讨论】:

    猜你喜欢
    • 2013-06-15
    • 2020-06-07
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多