Laravel的SQL连接问题,但ID显示相同

时间:2018-11-05 08:52:27

标签: sql laravel

我有2张桌子,桌子的名字是猫和产品。

,我希望将它们都加入,结果如下所示: 顺便说一下,我编写的SQL是

SELECT * 
FROM `cats` c join products p ON p.cat_id=c.id 
where c.cat_name = 'FFVII'

猫和产品加盟表答案

所以,这就是问题所在。我希望显示的ID是红色而不是橙色。反正解决了这个问题吗?请检查下面的图片,我们将感谢您的解决方案。谢谢...

final answer request

这是我在控制器页面上放置的功能

public function proCat(Request $request){
    $cat = $request->cat;

    $data= DB::table('products')->join('cats','cats.id','products.cat_id')
        ->where('cats.cat_name',$cat)->get();
    dd($data);
    return view('front.products',[
        'data' => $data , 'catByUser' => $cat
    ]);
}

2 个答案:

答案 0 :(得分:1)

如果您不需要表中的任何字段,那么您可以做的是,提及SQL查询中需要哪些字段。

因此,您不必提及SELECT *,

SELECT cat_name, 
       p_id, 
       created_at, 
       updated_at 
FROM   cats c 
       JOIN products p 
         ON p.cat_id = c.id 
WHERE  c.cat_name = 'FFVII' 

在您的控制器中,您可以使用以下代码获得结果。

$result = DB::table('cats')
            ->join('products', 'products.cat_id', '=', 'cats_id')
            ->select('cats.cat_name', 'cats.p_id', 'cats.created_at', 'cats.updated_at', 'products.*')
            ->where('cats.cat_name', '=', 'FFVII')
            ->get();

答案 1 :(得分:0)

SELECT cat_name, 
       p_id, 
       cats.created_at, 
       cats.updated_at, 
       products.* 
FROM   cats c 
       JOIN products p 
         ON p.cat_id = c.id 
WHERE  c.cat_name = 'FFVII'