Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Laravel一次又一次地连接同一个表_Mysql_Laravel_Join - Fatal编程技术网

Mysql Laravel一次又一次地连接同一个表

Mysql Laravel一次又一次地连接同一个表,mysql,laravel,join,Mysql,Laravel,Join,这是我的联接的当前代码 $vehicleTransferNotifications=DB::table('vehicle_transfer_notifications') ->join('vehicle_requests', 'vehicle_transfer_notifications.request_id', '=', 'vehicle_requests.id')

这是我的联接的当前代码

$vehicleTransferNotifications=DB::table('vehicle_transfer_notifications')
                                        ->join('vehicle_requests', 'vehicle_transfer_notifications.request_id', '=', 'vehicle_requests.id')
                                        // ->join('users', 'vehicle_requests.users_id', '=', 'users.id')
                                        // ->join('companies', 'users.company_id', '=', 'companies.id')
                                        // ->join('companies', 'vehicle_transfer_notifications.company_id', '=', 'companies.id')
                                        ->join('vehicles', 'vehicle_requests.vehicle_id', '=', 'vehicles.id')
                                        ->join('companies', 'vehicles.company_id', '=', 'companies.id')
                                        ->join('vehicle_types', 'vehicles.vehicle_type_id', '=', 'vehicle_types.id')
                                        ->join('vehicle_make', 'vehicles.make_id', '=', 'vehicle_make.id')
                                        ->select('vehicle_transfer_notifications.*','vehicle_transfer_notifications.id as notification_id','vehicle_transfer_notifications.seen as is_seen','vehicle_requests.*','vehicles.reg_no','vehicle_types.type','vehicle_make.name','companies.name as company_name')
                                        ->where('vehicle_transfer_notifications.company_id','=',auth()->user()->company_id)
                                        ->get();

现在我想在我的代码中添加类似于我有注释的东西。我如何添加到这个连接查询?因为我已经将我的查询加入到公司表中,所以我如何才能再次加入公司表,并在选择查询中再次获得类似
公司的名称?

您应该根据您的要求为
公司
表提供别名。
使用该别名获取数据,而不是
公司

$vehicleTransferNotifications=DB::table('vehicle_transfer_notifications')
                                        ->join('vehicle_requests', 'vehicle_transfer_notifications.request_id', '=', 'vehicle_requests.id')
                                        ->join('vehicles', 'vehicle_requests.vehicle_id', '=', 'vehicles.id')
                                        ->join('companies as company_one', 'users.company_id', '=', 'company_one.id')
                                        ->join('companies as company_two', 'vehicle_transfer_notifications.company_id', '=', 'company_two.id')
                                        ->join('companies as company_three', 'vehicles.company_id', '=', 'company_three.id')
                                        ->join('vehicle_types', 'vehicles.vehicle_type_id', '=', 'vehicle_types.id')
                                        ->join('vehicle_make', 'vehicles.make_id', '=', 'vehicle_make.id')
                                        ->select('company_one.name as company_name_one', 'company_two.name as company_name_two', 'company_three.name as company_name_three', 'vehicle_transfer_notifications.*','vehicle_transfer_notifications.id as notification_id','vehicle_transfer_notifications.seen as is_seen','vehicle_requests.*','vehicles.reg_no','vehicle_types.type','vehicle_make.name')
                                        ->where('vehicle_transfer_notifications.company_id','=',auth()->user()->company_id)
                                        ->get();

如果为同一个表提供别名,则可以再次使用该表进行联接。例如,join('companys AS c1','users.company_id','=','c1.id')并在select中使用c1.name来获取公司名称。有什么理由不使用雄辩和人际关系吗?@AhmedShefeer没有特别的理由。我觉得这对我来说很容易。我不太了解有说服力的人际关系。这是错误的吗?您的方法没有错,事实上,您的代码将更加高效,因为它在一个db查询中获得所有结果。使用关系可以更容易地编写代码,查询将更干净、更“可读”,但要实现上述结果,它将在数据库上执行多个查询。