2017-02-20 13 views
1

Поскольку я разрабатываю проект в larawel 5.3. и я использую две таблицы в базе данных сначала users ans second points, вы можете увидеть мою структуру таблиц в этой ссылке. I want to get user id in laravel 5.3 controller with Auth::user()->id but it creates error their Итак, когда происходит перерезка. она сохраняется в таблице точек получения assousiated с user_id так чистые точек пользователя могут могут быть принята, как с помощью folloing QueryНужна помощь в laravel 5.3 для получения данных в таблице в одном представлении из нескольких таблиц базы данных

$points = Points::select(DB::raw("sum(p_add)-sum(p_less) as Total"))->where('user_id', Auth::user()->id)->first(); 

теперь я иду GETT всех данных пользователей на одной странице администратора. поэтому я использую следующий код в контроллере

public function users_list() 
{ 
    $ptitle = "Website Users"; 
    $pdesc = ""; 

    $total_users = User::count(); 


    $users = User::select('*')->orderby('created_at', 'desc')->get(); 

     return view('admin.all-users-list', 
         ['ptitle' => $ptitle, 
         'pdesc' => $pdesc, 
          'users' => $users, 
          'total_users' => $total_users, 
         ]); 
} 

И folloing цикл Еогеасп для извлечения данных пользователей в странице просмотра

<table class="table table-hover"> 
          <tbody><tr> 
           <th>ID</th> 
           <th>User Name</th> 
           <th>Email</th> 
           <th>Country</th> 
           <th>Date</th> 
           <th>Points</th> 
          </tr> 

          <?php foreach ($users as $u){ ?> 

          <tr> 
           <td>{{ $u->id }}</td> 
           <td>{{ $u->user_name }}</td> 
           <td>{{ $u->email }}</td> 
           <td>{{ $u->country }}</td> 
           <td>{{ $u->created_at }}</td> 
           <td>????</td> 
          </tr> 



          <?php }?> 

          </tbody></table> 

и результат на взгляд как на этом изображении users table image

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

+0

вам нужно, чтобы получить все точки, в то время права для пользователя или в другом месте отдельных точек ?? – Sona

+0

есть. as - как 'poiunts.sum (p_add) -points.sum (p_less), где user_id = x' перед деталями каждого пользователя .. –

+0

нет необходимости использовать пользовательскую функцию для получения точек, которые вы имеете в виду со всеми пользователи точки зрения ... – Sona

ответ

0

вы можете сделать публичную функцию и называть ее каждой петлей в петле foreach. Или создайте статическую функцию в классе модели Points, чтобы получить очки для каждого пользователя, используя user_id в качестве аргумента. Положите getUserPoints на Points модели класса

public static function getUserPoints($userId){ 
    $points = self::select(DB::raw("sum(p_add)-sum(p_less) as Total")) 
         ->where('user_id', $userId)->first(); 
    if($points != null){ 
     return $points->Total; 
    } 
     return 0; 

    } 
} 

И вы можете называть его каждый цикл как {{ \App\Points::getUserPoints($u->id) }}

+0

вы приветствуете Абдулкарея Мохаммеда ... спасибо за решение моей проблемы. еще раз спасибо .. и еще одна вещь я могу использовать эту функцию в контроллере .. ?? поэтому я мог бы получить доступ к нему как '{{getUserPoints ($ u-> id)}}' вместо '{{\ App \ Points :: getUserPoints ($ u-> id)}}' –

+0

Если вы определяете его в глобальный охват. вы можете создать файл, названный в качестве примера 'public_functions.php' в каталоге' app/Helpers', и определить на нем повторяющиеся вызываемые функции, и вы должны поместить его в композитор.json для загрузки каждого запроса в глобальную область, например вспомогательная функция в laravel. '' autoload ": { " files ": [ " app/Helpers/public_functions.php ", ],' –

+0

Незначительные для вас еще раз. большое спасибо. –