分组依据和排序 laravel 应用中的总计数减少
Total count decreases in group by and sorting laravel app
我正在尝试在 Laravel 6.0
中构建一个应用程序,其中我具有排序功能,其中一些排序是通过加入 table 来完成的,因为它是关系数据。我的代码是:
$query->join('project_attribute_relation', 'projects.id', '=', 'project_attribute_relation.project_id')
->join('project_attributes', 'project_attribute_relation.attribute_id', 'project_attributes.id')
->select('projects.*', 'project_attributes.name as categories_name')
->groupBy('projects.id')
->orderBy('categories_name', request('sort_by_column')['order']);
我的问题是分页数据,即在此排序期间总项目的计数变少,因为它总是计算现有的关系数据并且忽略空关系。但是我也想拥有那些空的关系,因为它正在影响我的项目功能。
这是我的一般项目列表:
这是我按类别排序时的列表:
因为你用的是Laravel的join()
,也就是说你用的是innerjoin
查询,关系为空的项目将不会被收录。
如果要显示空关系的项目,
需要使用leftjoin
,这样关系为空的项目才会被包含进来,代码如下:
$query->leftjoin('project_attribute_relation', 'projects.id', '=', 'project_attribute_relation.project_id')
->leftjoin('project_attributes', 'project_attribute_relation.attribute_id', 'project_attributes.id')
我正在尝试在 Laravel 6.0
中构建一个应用程序,其中我具有排序功能,其中一些排序是通过加入 table 来完成的,因为它是关系数据。我的代码是:
$query->join('project_attribute_relation', 'projects.id', '=', 'project_attribute_relation.project_id')
->join('project_attributes', 'project_attribute_relation.attribute_id', 'project_attributes.id')
->select('projects.*', 'project_attributes.name as categories_name')
->groupBy('projects.id')
->orderBy('categories_name', request('sort_by_column')['order']);
我的问题是分页数据,即在此排序期间总项目的计数变少,因为它总是计算现有的关系数据并且忽略空关系。但是我也想拥有那些空的关系,因为它正在影响我的项目功能。
这是我的一般项目列表:
这是我按类别排序时的列表:
因为你用的是Laravel的join()
,也就是说你用的是innerjoin
查询,关系为空的项目将不会被收录。
如果要显示空关系的项目,
需要使用leftjoin
,这样关系为空的项目才会被包含进来,代码如下:
$query->leftjoin('project_attribute_relation', 'projects.id', '=', 'project_attribute_relation.project_id')
->leftjoin('project_attributes', 'project_attribute_relation.attribute_id', 'project_attributes.id')