如何使用laravel和vue js在单个表数据中水平显示数据

时间:2020-07-17 02:28:37

标签: javascript php laravel vue.js

我有2张桌子 表1

________________
| name_id  name |   
| 1       john  |
| 2      heaven |
|_______________|

表2

_______________________
| id name_id  product |   
| 1    1         bag  |
| 2    1       shoes  |
|_____________________|

我想像这样显示它

__________________________
| # | name    |  product  |   
| 1 |  John   | bag,shoes |
| 2 | Heaven  |           |
|___|_________|___________|

我不知道如何在控制器中执行此操作 Controller.php

       $data = DB::table('table1')
          ->leftjoin('table2','table2.name_id','=','table1.name_id')
             ->select('table1.*','table2.*')
          ->get();
    
    return $data

这就是我在表格中显示数据的方式

Myvue js

methods:{

  loaddata(){

   axios.get('api/data').then(({data}){
  (this.alldata = data)
})

}

}

2 个答案:

答案 0 :(得分:0)

您从::table中删除了DB

DB::('table1') => DB::table('table1')

$data = DB::table('table1')
            ->leftJoin('table2', 'table1.name_id', '=', 'table2.name_id')
            ->select('table1.*', 'table2.*')
            ->get();

答案 1 :(得分:0)

您可以尝试使用GROUP_CONCAT

例如这样的

DB::table('table1')
->leftjoin('table2','table2.name_id','=','table1.name_id')
->select('table1.*', DB::raw('GROUP_CONCAT(table2.product SEPARATOR ', ') AS products'))
->groupBy('table1.name_id')
->get();