Reactable Ordering
Setup models
Adding query scopes to Model described in Setup Reactable page.
Usage
Order by Reaction Counter
Add reaction counter aggregate of exact reaction type to reactables
$comments = Comment::query()
->joinReactionCounterOfType('Like')
->get();
joinReactionCounterOfType
method adds reaction_like_count
& reaction_like_weight
virtual attributes to each comment in collection.
Custom counters virtual attributes prefix
Join methods supports chaining and their default virtual attributes prefix reaction_{$type}
could be overridden with optional method argument.
$comments = Comment::query()
->joinReactionCounterOfType('Like')
->joinReactionCounterOfType('Dislike', 'hates')
->get();
Then each Comment
instance will have reaction_like_count
, reaction_like_weight
, hates_count
, hates_weight
virtual attributes.
Order models by reaction counter count value
$comment = Comment::query()
->joinReactionCounterOfType('Like')
->orderBy('reaction_like_count', 'desc')
->get();
Order models by reaction counter weight value
$comments = Comment::query()
->joinReactionCounterOfType('Like')
->orderBy('reaction_like_weight', 'desc')
->get();
Order by Reaction Total
Add reaction total aggregate to reactables
$comments = Comment::query()
->joinReactionTotal()
->get();
Each Reactable model will contain reaction_total_count
& reaction_total_weight
virtual attributes.
Custom totals virtual attributes prefix
Default virtual attributes prefix is reaction_total
, but it could be overridden with optional method argument.
$comments = Comment::query()
->joinReactionTotal('reaction_summary')
->get();
Then each Reactable model will contain reaction_summary_count
& reaction_summary_weight
virtual attributes.
Order by total count of reactions
$comments = Comment::query()
->joinReactionTotal()
->orderBy('reaction_total_count', 'desc')
->get();
Order by total weight of reactions
$comments = Comment::query()
->joinReactionTotal()
->orderBy('reaction_total_weight', 'desc')
->get();
Updated 10 months ago