как использовать левое соединение и группирование по laravel - PullRequest
0 голосов
/ 05 февраля 2020

таблица в базе данных

table 1
----------
id  name
----------
1   A
----------
2   B
----------


table 2
----------
id  order
----------
1   burger
1   cake          <----  I want to get the last data per ID
2   soda 
2   coffee        <-----  



RESULT
----------
id  name   order
----------
1    A     cake
2    b     coffee

TEST
----------
 1    A     burger
 1    A     cake
 2    b     soda
 2    b     coffee

Я хочу отобразить данные в таблице как в «РЕЗУЛЬТАТ», но я получаю сообщение об ошибке .. Они отображаются как в «ТЕСТ» pls help

testController. php

$ disp = DB :: table ('table1') -> leftjoin ('table2', 'table1.id', '=', 'table2.id') -> select ('table1. *', 'table2. *

')

-> get ();

return $ disp;

Ответы [ 4 ]

0 голосов
/ 05 февраля 2020

использовать внутреннее соединение

DB::table('table1')->join('table2','table2.id','=','table1.id')->groupBy('table1.id')->get();
0 голосов
/ 05 февраля 2020

Попробуйте функцию leftJoin () следующим образом.

DB::table('table1')->leftJoin('table2','table1.id','=','table2.id')->select(DB::raw('table1.*, table2.*'))->groupBy('table1.id')->get();
0 голосов
/ 05 февраля 2020
$disp = DB::table('table1')
  ->leftjoin('table2','table2.id','=','table1.id')-> groupBy('table1.name')->get();
return $disp;
0 голосов
/ 05 февраля 2020

Попробуйте

    $res = DB::table('table2')->join('table1','table2.id','=','table1.id')->select('table1.name','table2.*')->get();
    $result = $res->toArray();
    $result = array_reverse($result);
    $output = [];
    foreach($result as $re)
    {
        // dd($re);
        if(!array_key_exists($re->id,$output))
        {
            $output[$re->id] = [
                'id'   => $re->id,
                'order' => $re->order,
                'name' => $re->name
            ];
        }
    }
    dd(array_reverse($output));

Вывод будет

 [
  0 => [
    "id" => 1
    "name" => "A"
    "order" => "Cake"
 ]
 1 => [
   "id" => 2
   "name" => "B"
   "order" => "Coffee"
]
]
...