I’m pretty new to Laravel. I have a projects table in MySQL DB
represented by a model Project.php
. I want to count rows based on two different column values. Each client can have multiple projects, and the status may be ongoing
or completed
. Let’s say the client_id column (Column A)
and the status column (Column B)
are the two columns I want to base my counting upon.
I want to be able to count only the first row (if multiple exists) of the MySQL table where a particular client have column B
value as ongoing
as well as all other clients with column B
values as ongoing
. The image below depicts what the table looks like:
In this case, client_id
s 1 and 3 have two ongoing
projects each, I want to be able to count them as 1 each along with others (client_id 2
). So the count for clients with ongoing
projects should be 3.
I can count all rows with ongoing
project with this code snippet
Project::where('status', 'Ongoing')->count();
But cannot differentiate if a client has more than 1 projects ongoing
. Please kindly assist me with this.
2
Answers
Get the Client id for example
If you want to count how many clients have at least one ongoing project you essentially have two options:
If you define a relationship between the
Client
andProject
model you can get all clients with ongoing projects:The first method should be a bit faster but if you then want to retrieve the clients it’s easier to adapt the 2nd method to return the clients instead of the count