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查询中获得所有结果。使用关系可以更容易地编写代码,查询将更干净、更“可读”,但要实现上述结果,它将在数据库上执行多个查询。