2017-03-01 45 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