2017-03-01 143 views
0

我的DB是:Laravel DB查询提供了一组直接MySQL查询不同的结果的

|category_id|category_slug |category_name |parent_category_id| 
|1   |Main Category1|Main Category1|0     | 
|2   |Main Category2|Main Category2|0     | 
|3   |Sub Category1 |Sub Category1 |1     | 
|4   |Sub Category2 |Sub Category2 |1     | 
|5   |Sub Category3 |Sub Category3 |2     | 

我想在MySQL

执行以下查询
SELECT * 
FROM categories AS subcategory 
JOIN categories AS parent ON parent.category_id = subcategory.parent_category_id 
WHERE subcategory.category_display_type = 'sidebar' 
    AND subcategory.category_visibility = 1 

像这样:

class SidebarnavComposer 
{ 
    public function compose(View $view) 
    { 
     $params = DB::table('categories as subs')->join('categories as cats', function($join){ 
       $join->on('subs.parent_category_id', '=', 'cats.category_id') 
       ->where('subs.category_display_type', '=', 'sidebar') 
       ->where('subs.category_visibility', '=', 1); 
    })->get(); 


     $view->with('subcategories', $params); 

    } 

问题是我得到了不同的结果集。

当我在MySQL直接使用第一查询我得到如下:

category_id 
category_id1 
category_title 
category_title1 
category_slug 
category_slug1 
....... 

当我在laravel申请执行第二查询,我得到以下的结果集:

category_id 
category_title 
category_slug 
....... 

这基本上意味着我无法访问所有必要的列。

所以我需要能够做的是在下面的方法来构建URI为我的子类别:

category_slug1/category_slug 

其中category_slug1是主要类别蛞蝓和category_slug是子目录蛞蝓。问题是我只能得到主要的类别slug,并且不能在我的子类别中使用slug。

我不知道我在做什么错了,因为我是新来laravel和此刻真的不知道多少,所以请帮助我,如果你能

回答

1

使用此:

$data = DB::table('categories AS subcategory') 
     ->join('categories AS parent', 'parent.category_id', '=', 'subcategory.parent_category_id') 
     ->where('subcategory.category_display_type', '=', 'sidebar') 
     ->where('subcategory.category_visibility', '=', 1) 
     ->select('subcategory.category_slug AS category_slug1', 'parent.category_slug AS category_slug') 
     ->get(); 
+0

喜Naincy,我得到以下错误:'code'SQLSTATE [42S22]:未找到列:1054未知列'on子句'中的子列'subcategory.parent_category_id'(SQL:选择子类别。*,类别''作为'子类别'内部连接'类别'作为父类别''父类别'.'category_id' ='子类别'.'parent_category_id'其中'子类别'.'category_display_type' =侧边栏和'子类别'.'category_visibility' = 1) – AlexB

+0

@AlexB您可以根据您的数据库更改它......这是我仅从您的问题中提取的内容...请从您的数据库中查看确切的字段名称 – Naincy

+0

我修正了错字,但是我得到的结果是相同,所以我只得到主要类别的结果,我实际需要的是有权访问这两个类别和子类别,以便能够构建包含category_slug/subcategory_slug的URI。只是为了澄清category_slug和subcategory_slug是同一列'category_slug',但依赖应该踢入并分离结果。 – AlexB