【问题标题】:how to retrieve different names from same table with different ids on join laravel如何在加入 laravel 时从具有不同 id 的同一张表中检索不同的名称
【发布时间】:2020-05-10 04:01:39
【问题描述】:

我需要从目的地表中为每个 from_destination_id 和 to_destination_id 获取名称 作为 fromDestinationName 和 toDestinationName

$bookingTransfersData = DB::table('transfers as t')
            ->select('t.periodStart as periodStart', 't.periodEnd as periodEnd','t.days','t.transfer_id','t.cost_round_trip',
                't.cost_one_way','t.status','d.destination_id as destinationId','d.name as destinationName', 't.type',
                'tf.name as officeName', 'ag.name as agencyName', 'u.name as userName', 'v.name as vehicleName')
            ->join('destinations as d', function ($join){
                $join->on('t.from_destination_id','=','d.destination_id')
                    ->orOn('t.to_destination_id','=','d.destination_id');
            })->join('vehicles as v','t.vehicle_id','=','v.vehicle_id')
            ->join('transfer_offices as tf','t.office_id','=','tf.transfer_office_id')
            ->join('agencies as ag','t.forAgency_id','=','ag.agency_id')
            ->join('users as u','t.addedBy_user_id','=','u.id')
            ->get();

我想在这个结果之后获取每个 id 的名称

$searchResults = $bookingTransfersData
            ->where('periodStart','between', $periodStart && $periodEnd)
            ->where('periodEnd','between', $periodStart && $periodEnd)
            ->where('destinationName','=',$from_destination_name && $to_destination_name)->where('type','like', $type);

喜欢:

$fromDestinationName = $searchResults->pluck('from_destination_id','destinationName')
            ->where('from_destination_id','=','destinationId');

但是$fromDestinationName 返回一个空集合

请帮忙:)

【问题讨论】:

    标签: laravel join eloquent data-retrieval


    【解决方案1】:

    我通过删除这个连接解决了它:

    ->join('destinations as d', function ($join){
                    $join->on('t.from_destination_id','=','d.destination_id')
                        ->orOn('t.to_destination_id','=','d.destination_id');
                })
    

    并为每个destionation_id添加一个连接以检索每个名称 如果我不添加我加入两次 as 以将其命名为新名称的表名,这将不起作用 'destinations as d1''destinations as d2'

    $bookingTransfersData = DB::table('transfers as t')
                ->select('t.periodStart as periodStart', 't.periodEnd as periodEnd','t.days','t.transfer_id','t.cost_round_trip',
                    't.cost_one_way','t.status','d1.destination_id as fromDestinationId','d1.name as fromDestinationName', 't.type',
                    't.to_destination_id','tf.name as officeName', 'ag.name as agencyName', 'u.name as userName', 'v.name as vehicleName',
                    't.from_destination_id', 'd2.destination_id as toDestinationId','d2.name as toDestinationName')
                ->join('destinations as d1','t.from_destination_id','=','d1.destination_id')
                ->join('destinations as d2','t.to_destination_id','=','d2.destination_id')
                ->join('vehicles as v','t.vehicle_id','=','v.vehicle_id')
                ->join('transfer_offices as tf','t.office_id','=','tf.transfer_office_id')
                ->join('agencies as ag','t.forAgency_id','=','ag.agency_id')
                ->join('users as u','t.addedBy_user_id','=','u.id')->get();
    

    问题解决了:)

    【讨论】:

      猜你喜欢
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多