Как передать несколько переменных в одном представлении Laravel? - PullRequest
0 голосов
/ 13 февраля 2019

В моем контроллере:

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'));
}

На мой взгляд:

<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>

Я пытаюсь распечатать значения счетчиков, есть ли лучший способ кодировать контроллер?

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

Попробуйте,

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'));
    }
0 голосов
/ 13 февраля 2019

Лучший способ сделать это с помощью одного запроса и одной переменной:

    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);
            }

Использовать в файле вида, например,

<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>

Надеюсь, это поможет.Спасибо.

0 голосов
/ 13 февраля 2019

Да, вы можете сделать это,

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

взгляните на этот вопрос и его ответы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...