我在 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 回答
- 0 關注
- 198 瀏覽
添加回答
舉報
0/150
提交
取消