为了账号安全,请及时绑定邮箱和手机立即绑定

从 Laravel 范围查询中排除连接列 ONLY_FULL_GROUP_BY 错误

从 Laravel 范围查询中排除连接列 ONLY_FULL_GROUP_BY 错误

PHP
烙印99 2021-10-15 16:41:48
我在 Laravel 项目中有一个范围查询,它隐式地获取了结果集中我不想要的两列,因为它们导致 ONLY_FULL_GROUP_BY 错误,我不想禁用此数据库条件。我们有以下关系:组织有 -> 类别public function categories(){    return $this->belongsToMany(        Category::class,        'organisation_unit_template_categories',        'organisation_unit_id',        'template_category_id'    );}类别有 -> 模板public function templates(){    return $this->hasMany(Template::class);}模板有 -> 尺寸public function dimensions(){    return $this->belongsTo(Dimensions::class, 'dimensions_id');}我们的类别也有一个范围查询,这样我们就可以得到所有包含至少一个维度为 'digital = 0' 的模板的类别public function scopeIsPrint($query){    return $query        ->select($this->getTable().'.*')        ->join('templates', 'template_categories.id', '=', 'templates.category_id')        ->join('template_dimensions', 'template_dimensions.id', '=', 'templates.dimensions_id')        ->where('template_dimensions.digital', 0)        ->groupBy($this->getTable().'.id');}我们从控制器调用范围查询,如下所示:$categories = $this->organisation->categories()->isPrint()->get();这是输出:SELECT     `template_categories`.*,    `organisation_unit_template_categories`.`organisation_unit_id` AS `pivot_organisation_unit_id`,    `organisation_unit_template_categories`.`template_category_id` AS `pivot_template_category_id`FROM    `template_categories`        INNER JOIN    `organisation_unit_template_categories` ON `template_categories`.`id` = `organisation_unit_template_categories`.`template_category_id`        INNER JOIN    `templates` ON `template_categories`.`id` = `templates`.`category_id`        INNER JOIN    `template_dimensions` ON `template_dimensions`.`id` = `templates`.`dimensions_id`WHERE    `organisation_unit_template_categories`.`organisation_unit_id` = 2        AND `template_dimensions`.`digital` = 0        AND `template_categories`.`deleted_at` IS NULLGROUP BY `template_categories`.`id`
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信