0

In my controller:

public function index()
{
    $userTotal = User::all();
    $userActive = User::where('status', '=', 'Active');
    $userInactive = User::where('status', '=', 'Inactive');
    $userOnAndOff = User::where('status', '=', 'OnAndOff');

    return view('member.home')
        ->with(compact('userTotal'))
        ->with(compact('userActive'))
        ->with(compact('userInactive'))
        ->with(compact('userOnAndOff'));
}

In my view:

<div class="card border-success">
    <div class="card-horizontal">
        <div class="card-body bg-success">
            <p class="card-text text-white bg-success text-md-center"><i class="fas fa-users fa-2x"></i></p>
        </div>
        <div class="card-body text-success">
            <p class="card-text">Registered Member: <strong>{{ $userTotal->count() }}</strong></p>
            <p class="card-text">Active Members: <strong>{{ $userActive->count() }}</strong></p>
            <p class="card-text">Active Members: <strong>{{ $userActive->count() }}</strong></p>
            <p class="card-text">Inactive Members: <strong>{{ $userInactive->count() }}</strong></p>
        </div>
    </div>
</div>

I am trying to print out count values, is there any better way to code the controller?

3 Answers 3

5

Yes, you can do like this,

 return view('viewblade', compact('userTotal','userActive','userInactive','userOnAndOff'));

take a look at this question and it's answers

Sign up to request clarification or add additional context in comments.

Comments

3

Best way to do this by single query and single variable :

    public function index()
            {
              // single query to get total user and status based users count
            $data = User::select(DB::raw('COUNT(*) AS total_users'), 
                DB::raw('SUM(CASE WHEN status = "Active" THEN "Active"  END ) AS active_users'), 
                DB::raw('SUM(CASE WHEN status = "Inactive" THEN "Inactive" END ) AS inactive_users'),
        DB::raw('SUM(CASE WHEN status = "OnAndOff" THEN "OnAndOff" END ) AS onoff_users')
            )->first();

            return view('member.home')->with($data);
            }

Use in view file like

<div class="card border-success">
    <div class="card-horizontal">
        <div class="card-body bg-success">
           <p class="card-text text-white bg-success text-md-center"><i class="fas fa-users fa-2x"></i></p>
        </div>
        <div class="card-body text-success">
                <p class="card-text">Registered Member: <strong>{{ $total_users }}</strong></p>
                <p class="card-text">Active Members: <strong>{{ $active_users }}</strong></p>
                <p class="card-text">Active Members: <strong>{{ $active_users }}</strong></p>
                <p class="card-text">Inactive Members: <strong>{{ $inactive_users }}</strong></p>
        </div>
    </div>
</div>

Hope it helps. Thank you.

Comments

1

Try this,

public function index()
    {
        $userTotal = User::all();
        $userActive = User::where('status', '=', 'Active');
        $userInactive = User::where('status', '=', 'Inactive');
        $userOnAndOff = User::where('status', '=', 'OnAndOff');

        return view('member.home', compact('userTotal','userActive','userInactive','userOnAndOff'));
    }

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.