私は2つのテーブルusersとuser_actionsを持っています。私はすべてのユーザーを( '利用可能'、真)(...と他のロジック)に取得し、user_actions.clicks列の合計でそれらを注文する必要があります。結果は、UserクラスのコレクションでなければなりませんLaravel 5.3。 - where節とorderByのrelationからsum( 'column')を使用する方法
User::where('available', true)->where("something else....")->orderBy('sum(user_actions.clicks)', 'desc')->get();
:
public function actions()
{
return $this->hasMany(UserActions::class);
}
私はこのようなものが必要。
ありがとう、これも私の最初の解決策でしたが、私が参加する場合、私はこのエラーを受け取ります: "構文エラーまたはアクセス違反:1055 'compari_ci.users.created_at'はGROUP BYにありません..." created_atは別のものですユーザーテーブルのフィールド。私はLaravel 5.3 btwを使用しています。 –
これはMySQLに関連しています。この回答を確認してくださいhttp://stackoverflow.com/questions/34115174/error-related-to-only-full-group-by-when-executing-a-query-in-mysql –
これを行うと、私は'user_actions.user_id '、' = '、' users.id '); $ query-> join(' user_actions '、' user_actions.user_id '、' = '、' users.id '); $ query-> selectRaw( 'クリック数としてsum(user_actions.clicks)'); $ query-> groupBy( 'user_id'); $ query-> orderBy( 'clicks'、 'desc'); ' –