Как переместить код с блейда на контроллер - PullRequest
0 голосов
/ 06 марта 2019

У меня есть таблица как эта таблица Activites: enter image description here

и я извлекаю данные из базы данных в таблицу с этим кодом в контроллере:

$TableB1 = \DB::table('users')
    ->join('group_user', 'users.id', '=', 'group_user.user_id')
    ->join('groups', 'groups.id', '=', 'group_user.group_id')
    ->select(
       'users.name as name',
       'group_user.user_id as id',
       'groups.name as groupname'
       )
    ->get();
    $view->with('TableB1',$TableB1);
    return $view;

In index.blade.php

<thead>
    <tr>
       <th>Team</th>
       <th>Name</th>
       <th>No. of Showing</th>
       <th>No. of Follow up</th>
       <th>New Lead</th>
       <th>Personal Lead</th>
    </tr>
</thead>
<tbody>
   <?php
     use Carbon\Carbon;
     foreach ($TableB1 as $data){
        echo
            '<tr>
             <th scope="row">'. $data->groupname .'</th>
             <th scope="row">'. $data->name .'</th>';
             // To extract the number of meetings done by each agent(owned_by_id) everyday   
             $meetings = \DB::table('meetings')
                       ->where('company_id', 1)->where('owned_by_id', $data->id)
                       ->where(DB::raw('DAY(created_at)'), Carbon::today()->day);
              echo '<th scope="row">' . $meetings->count() . '</th>';
              // To extract the number of calls done by each agent(owned_by_id) everyday   
              $calls = \DB::table('calls')
                     ->where('company_id', 1)->where('owned_by_id', $data->id)
                     ->where(DB::raw('DAY(created_at)'), Carbon::today()->day);
              echo '<th scope="row">' . $calls->count() . '</th>';
              // To extract the number of leads created by each agent(owned_by_id) everyday   
              $leads = \DB::table('leads')
                     ->where('lead_status_id', 1)->where('company_id', 1)->where('owned_by_id', $data->id)
                     ->where(DB::raw('DAY(created_at)'), Carbon::today()->day);
              echo '<th scope="row">' . $leads->count() . '</th>';
     }
  ?>
  </tr>
</tbody>

Как переместить код в php blade на контроллер?
код работает, но я думаю, что код должен быть в контроллере правильно?
и, если возможно, есть ли способ отфильтровать эти данные в таблице по месяцам и годам через AJAX, чтобы мне не пришлось обновлять страницу?

Я использую Laravel 5.7

1 Ответ

0 голосов
/ 06 марта 2019

В вашем контроллере вы можете сделать что-то вроде этого:

// $TableB1 = ...

// note the & in &$entry.
// The & makes $entry writable in the loop (to say it simply)

foreach ($TableB1 as &$entry){
    $entry->meetingCount = (
        \DB::table('meetings')
        ->where('company_id', 1)->where('owned_by_id', $data->id)
        ->where(DB::raw('DAY(created_at)'), Carbon::today()->day)
    )->count();

    // $entry->callCount = ...
    // $entry->leadCount = ...
}

// $view->with('TableB1',$TableB1);

Этого цикла, вероятно, можно избежать, напрямую включив все значения в ваш SQL, но в любом случае давайте продолжим.

Теперь вы можете просто сделать это по вашему мнению:

'<tr>
     <th scope="row">'. $data->groupname .'</th>
     <th scope="row">'. $data->name .'</th>';
     <th scope="row">'. $data->meetingCount .'</th>';
     <th scope="row">'. $data->leadCount .'</th>';
    ...

Бонус: поскольку вы используете Laravel и Blade, почему бы не использовать их синтаксис?

<tbody>
@foreach($table as $entry)
    <tr>
        <th scope="row">{{$entry->groupname}}</th>
        <th scope="row">{{$entry->name}}</th>
        <th scope="row">{{$entry->meetingCount}}</th>
    </tr>
@endforeach
</tbody>

Нет необходимости в <?php заявлениях и множестве знаков кавычек.

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