0

私のDBは次のとおりです。

|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が初めてで、現時点ではあまりよく知らないので、何が間違っているのかわかりません。できれば助けてください

4

1 に答える 1

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();
于 2017-03-01T10:27:56.047 に答える