Laravel - 使用 Join 语句更新表中的所有列

Posted

技术标签:

【中文标题】Laravel - 使用 Join 语句更新表中的所有列【英文标题】:Laravel - Update all column in the table with Join Statement 【发布时间】:2019-06-01 19:18:15 【问题描述】:

我现在需要更新我的字段中的所有列我有 Join 语句并且我正在获取数据但我无法更新所有列

这是我的连接表名称movies,我需要根据我输入的值更新所有aircraft_id

这是我的控制器

  $getairId = DB::table('aircrafts')
  ->join('movies','movies.aircraft_id','=','aircrafts.aircraft_id')
  ->select('movies.*')
  ->update('aircraft_id.*')
  ->where('aircrafts.aircraft_id','=', $airid)
  ->get();

没有更新。

预期结果

所以假设这是我的页面

当我提交时,我应该得到这个实际结果/输出

【问题讨论】:

这个问题很不清楚。请退后一步,为两个表提供清晰的示例数据,然后向我们展示更新的预期结果应该是什么。现在,我怀疑有人甚至能猜到这里。 @TimBiegeleisen 您好,先生,谢谢您的建议,请查看我的预期输出/结果我编辑了我的问题,谢谢 @TimBiegeleisen 先生,你看到了吗? 嗨,夏天,如果你只想更新飞机表,那你为什么要在电影表上加入呢? 我的意思是,先生,有什么办法吗?我认为加入将动态工作并更新所有列 【参考方案1】:

我假设假设你想用 3 替换飞机 id $airid = 1

$getairId = DB::table('aircrafts')
              ->join('movies','movies.aircraft_id','=','aircrafts.aircraft_id')
              ->where('aircrafts.aircraft_id','=', $airid)
              ->update(array("aircrafts.aircraft_id"=>3));

在最后一个更新语句中,您可以传递要更新的变量名称,该名称来自您的前端表单。

希望此代码对您有用

【讨论】:

你好!谢谢,但最后一件事是让我们假设这是我的文本框$airid = $request->input('aircraft_id');,我将更新更改为>update(array("series.aircraft_id"=>$airid));,为什么它不起作用?为什么不更新? :( 在 $airid = $request->input('aircraft_id'); 之后,你在 $airid 中得到了什么? 试试 $airid = $request->aircraft_id;直接

以上是关于Laravel - 使用 Join 语句更新表中的所有列的主要内容,如果未能解决你的问题,请参考以下文章

如何在SQL中使用JOIN执行UPDATE语句?

sql语句中JOIN ON 的使用

AS 函数在 LARAVEL 数据库语句中不起作用

JOIN 中的 SQL CASE 语句 - 当其他表中的值存在时

laravel4 更新数据透视表中的附加列

求SQL语句里面join的用法,求例子及讲解。