在laravel 5.3中需要帮助以从多个数据库表中获取单个视图中的表中的数据

时间:2017-02-20 05:18:56

标签: php laravel-5.3

因为我正在开发一个废弃物5.3的项目。我在数据库中使用两个表users和第二个points你可以在这个链接中看到我的点表结构。 I want to get user id in laravel 5.3 controller with Auth::user()->id but it creates error their 所以当横断发生时。它被保存在与user_id相关的点表中,因此可以将用户的净点视为使用下面的查询

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

现在我要在一个管理页面中获取用户的所有数据。所以我在控制器中使用以下代码

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

下面的foreach循环在视图页面中获取用户数据

<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表中获取网点。请帮我解决这个问题。

1 个答案:

答案 0 :(得分: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) }}