【问题标题】:SQL error in Laravel 6 when joining tables连接表时 Laravel 6 中的 SQL 错误
【发布时间】:2019-11-25 05:11:28
【问题描述】:

所以我在 phpmyadmin 中编写了这个查询,它工作正常

SELECT als.name,als.airlineCode, flights.planeNumber, flights.departureAirport, 
dep_air.name,flights.departurelTime, flights.arrivalAirport, 
arr_air.name,flights.arrivalTime FROM `flights`
JOIN airports AS dep_air
ON flights.departureAirport = dep_air.airportCode
JOIN airports as arr_air
ON flights.arrivalAirport = arr_air.airportCode
JOIN airlines as als
ON flights.airlineReference = als.airlineCode
WHERE dep_air.airportCode = 'YYZ' AND arr_air.airportCode = 'YUL' ;

here it is in action

但是当我在控制器的 laravel 中尝试这个时

public function formSubmit(){


       $flights = DB::table('flights')
        ->select('als.name','als.airlineCode','flights.planeNumber','flights.departureAirport','dep_air.name','flights.departurelTime','flights.arrivalAirport','arr_air.name','flights.arrivalTime')
        ->join('airports as dep_air','flights.departureAirport','dep_air.airportCode')
        ->join('airports as arr_air' ,'flights.arrivalAirport','arr_air.airportCode')
        ->join('airlines as als,','flights.airlineReference','als.airlineCode')
        ->where('dep_air.airportCode','=', 'YYZ')
        ->where('arr_air.airportCode','=', 'YUL')
        ->get();
        dd($flights);
        return view('oneWayTrips', compact('flights'));
    }

我收到以下错误

Illuminate\Database\QueryException SQLSTATE[42S22]:找不到列: 1054 “字段列表”中的未知列“als.name”(SQL:选择 als.name, als.airlineCode, flights.planeNumber, flights.departureAirport, dep_air.name, flights.departurelTime, flights.arrivalAirport, arr_air.name, flights.arrivalTime from flights 内连接 airports 作为dep_airflights.departureAirport = dep_air.airportCode 内连接 airportsarr_air on flights.arrivalAirport = arr_air.airportCode 内连接 airlines 作为als,flights.airlineReference = als.airlineCode 其中dep_air.airportCode = YYZ 和 arr_air.airportCode = YUL)

更新:

在拼写错误修复后查询几乎可以工作,但我注意到其中一个值缺少 arr_air.namedep_air.name 工作正常并显示出发机场名称,arr_air.name 代表到达机场的名称

这是当前的查询

【问题讨论】:

  • 哎呀感谢大家让我认识,但是我在原始帖子中更新了一个新错误。
  • 在修复错字后更新是因为我在所有 3 个表中都有一个名为 name 的字段,因此它们相互覆盖,因为 als.name 应该是加拿大航空公司,另外两个应该是机场名称跨度>

标签: mysql laravel


【解决方案1】:

我认为你必须检查“airlines”表是否有“name”字段....

【讨论】:

  • 我仔细检查了航空公司表中有一个名称字段。
  • 我发现他们是一个额外的逗号
  • 是的,您告诉了“names”,但您使用“name”,您必须使用“names”而不是“name”
  • 我更新了这个问题,它几乎解决了,但由于某种原因,我的值之一没有像其他值那样显示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 2011-10-09
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
相关资源
最近更新 更多