简体   繁体   English

加入表时 Laravel 6 中的 SQL 错误

[英]SQL error in Laravel 6 when joining tables

So i wrote this query in phpmyadmin and it is working correctly所以我在 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在这里它在行动

however when i try this in laravel in the controller但是,当我在控制器中的 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'));
    }

I get the following error我收到以下错误

Illuminate\\Database\\QueryException SQLSTATE[42S22]: Column not found: 1054 Unknown column 'als.name' in 'field list' (SQL: select als . name , als . airlineCode , flights . planeNumber , flights . departureAirport , dep_air . name , flights . departurelTime , flights . arrivalAirport , arr_air . name , flights . arrivalTime from flights inner join airports as dep_air on flights . departureAirport = dep_air . airportCode inner join airports as arr_air on flights . arrivalAirport = arr_air . airportCode inner join airlines as als, on flights . airlineReference = als . airlineCode where dep_air . airportCode = YYZ and arr_air . airportCode = YUL)照亮\\数据库\\ QueryException SQLSTATE [42S22]:列未找到:1054未知列在'字段列表' als.name“(SQL:选择alsnamealsairlineCodeflightsplaneNumberflightsdepartureAirportdep_airnameflightsdeparturelTimeflightsarrivalAirportarr_airnameflightsarrivalTimeflights内加入airports作为dep_airflightsdepartureAirport = dep_airairportCode内加入airports作为arr_airflightsarrivalAirport = arr_airairportCode内部联接airlinesals,flightsairlineReference = alsairlineCode其中dep_airairportCode = YYZ和arr_airairportCode = YUL)

UPDATE:更新:

The query is almost working after the typo fixes but i've noticed one of the values is missing the arr_air.name .错误修复后查询几乎可以正常工作,但我注意到其中一个值缺少arr_air.name the dep_air.name is working fine and showing the departure airport name, arr_air.name represents the name for the arrival airport dep_air.name工作正常并显示出发机场名称, arr_air.name表示到达机场的名称

this is the query at the moment这是目前的查询

立即查询

我想你必须检查“航空公司”表有“名称”字段......

You have a typo in this line 您在此行中有错字

->join('JOIN airlines as als,','flights.airlineReference','als.airlineCode')

It should be like this 应该是这样

->join('airlines as als,','flights.airlineReference','als.airlineCode')

could you please remove "JOIN" string into join function.. 您能否将“ JOIN”字符串删除到连接函数中。

REMOVE: 去掉:

->join('JOIN airlines as als,','flights.airlineReference','als.airlineCode')

And Use this : 并使用这个:

->join('airlines as als,','flights.airlineReference','als.airlineCode')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM