ExohJosh
ExohJosh

Reputation: 1892

Dealing with likes in Laravel with Eloquent

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

Answers (1)

Luceos
Luceos

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

Related Questions