エラー診断:質問 Laravel5.5 リレーション先でカラムごとのcount集計する

エラー エラー診断 質問 Laravel5.5 PHP Laravel クエリビルダ Eloquent DB リレーション

使用している言語・フレームワークは何ですか?

Laravel5.5

何のシステムを作ろうとしてるんですか?

WEB

何をしようとしているところですか?

リレーション先でカラムごとのcount集計する
これをリレーション先でやりたい
 
https://error-search.com/error-post/detail/262/Laravel%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E3%83%93%E3%83%AB%E3%83%80%E3%81%A7groupBy%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E4%BB%B6%E6%95%B0%28count%29%E3%81%AE%E9%9B%86%E8%A8%88
 
 
エラーメッセージはなんですか?

SQLSTATE[42000]: Syntax error or access violation: 1140 Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

 
どのコードを実行しましたか?

//こんな感じ

$pref = $this->object
    ->with('city','department')
    ->whereHas('department', function($q) {
    $q->select(\DB::raw('count(*) as deps, id'));
        $query->where('category', '5');
    })
    ->groupBy('department.id')
    ->get();

 
エラー箇所は分かりますか?

はい

エラーを翻訳しましたか?

はい

どのように検索したらいいか分かりますか?

はい

検索しましたか?

はい

エディターは使ってますか?

はい

エディターで構文チェックはONになってますか?

はい

動いてた時の状態に戻せますか?

はい


解決

結局この方法は使わず
リレーション以前にアクセスするテーブルを集計したいテーブルにして条件はリレーションに足す形にして思い通りの挙動になった。
リレーション先の集計自体のやり方は分からない。

Laravelおにいさん / 2018-06-04 / 380 / 1
このエントリーをはてなブックマークに追加
関連記事

コメント

解決を追記

anonymous / 2018-06-04