Laravel 数据库查询给出了一组不同于直接 MySQL 查询的结果
Laravel DB query gives a set of results different from direct MySQL query
我的数据库是:
|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 而无法获得 URI 中我的子类别的 slug。
我不确定自己做错了什么,因为我是 laravel 的新手,目前还不太了解,所以如果可以的话请帮助我
使用这个:
$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();
我的数据库是:
|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 而无法获得 URI 中我的子类别的 slug。
我不确定自己做错了什么,因为我是 laravel 的新手,目前还不太了解,所以如果可以的话请帮助我
使用这个:
$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();