2017-03-01 11 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アプリケーションで2番目のクエリを実行すると、私は結果の次のセットを取得:

category_id 
category_title 
category_slug 
....... 

をこれは基本的に、必要なすべての列にアクセスできないことを意味します。

は、だから私は行うことができるために必要なものを次のように私のサブカテゴリURIを構築することです:category_slug1はメインカテゴリスラッグとcategory_slugある

category_slug1/category_slug 

がサブディレクトリスラグです。問題は、私はメインカテゴリのスラッグだけを取得し、URIの私のサブカテゴリのためにスラッグを得ることができないということです。

私は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 clause'内の 'subcategory.parent_category_id'(SQL: 'subcategory'。*、' parent'。* from ' 'サブカテゴリ'内部の 'categories'は' parent'の 'parent'として継承します.'category_id' =' subcategory'.parent_category_id 'subcategory'.category_display_type' =サイドバーと' subcategory'。 'category_visibility' = 1) – AlexB

+0

@AlexB DBごとに変更することができます...あなたの質問から取ったものです...あなたのDBの正確なフィールド名を参照してください – Naincy

+0

私はタイプミスを修正しましたが、私が得た結果は同じように私はメインカテゴリの結果しか得られません。実際に必要なのはcategory_slug/subcategory_slugを含むURIを構築できるようにカテゴリとサブカテゴリの両方にアクセスできることです。 category_slugとsubcategory_slugの両方が同じ列 'category_slug'であることを明確にするだけですが、依存関係はキックインして結果を分離する必要があります。 – AlexB

関連する問題