Reputation: 1892
I'm trying to create a list of the 10 most liked 'Freestyles' on my website.
The like table has the freestyle ID and a user ID inside of it, the freestyle belongs to the like table.
I'm wondering how I can express this in eloquent and retrieve the SUM of all of the likes in the Like table via the Freestyle ID.
So, where all of the freestyle IDs = 1 (for example) count them and return the amount.
Sorry if it doesn't make much sense!
Upvotes: 0
Views: 179
Reputation: 6730
So you have two models:
Freestyle (table freestyles) and Like (table likes).
A like is something a user will give to a freestyle. Therefore a Like belongs to a Freestyle and a Freestyle has many Likes. Please note the terminology I use in my phrasing. A Like also belongs to a User, but that's not too important for your question.
In order to get the total likes for a Freestyle you should have the relation likes defined as a "hasMany".
class Freestyle extends \Eloquent {
public function likes() {
return $this->hasMany(Like::class);
}
}
With this relation you can now specify the total number of likes, using the relation:
Freestyle::find(1)->likes->count();
Likes (as a property call, not a method call) will return an \Illuminate\Database\Eloquent\Collection
which offers the easy method count.
Upvotes: 1