Laravel - 检查用户是否提交了任何记录

时间:2015-05-05 10:28:50

标签: php database laravel

我正在做一个基于deviantart的简单测试网站。在索引页面上,我想显示随机用户的随机图形。我已经成功完成了这个问题,但问题在于用户可以拥有零图形,我希望在这种情况下过滤并选择其他用户。

所以我设置了我的模型,以便图形属于用户,用户有多个图形

这是控制器

    public function index()
{
    //Select three random users
    $user = \App\User::orderByRaw("RAND()")->take(3)->get();

    //Select a graphic from a user
    foreach ($user as $user) {
        $graphics[] = $user->graphics->first();
    }

    return view("page.index",compact('graphics'));
}

我只是想检查一个选定的随机用户是否提交了任何图形,如果没有,请选择另一个随机用户,我完全不知道如何做到这一点?

2 个答案:

答案 0 :(得分:1)

试试这个 如果您想尝试使用DB然后相应地更改,这是雄辩的方式。 if(Graphics::where('user_id', '=', $randomUserId)->exists()){ // user found }

答案 1 :(得分:0)

以下是我如何解决它

/** Generate graphics function
* Generates random users and fetches their graphics.
* $no_users is the last id of users or the max number of users.
* @return graphics collection
*/

public function generate_graphics($no_users)
{
    $rnum_selected = [];
    $i = 1;

    while ($i <= 3) {
        $rnum = rand(1, $no_users);
        if (!in_array($rnum, $rnum_selected)) {
            $rnum_selected[] = $rnum;
            $user = \App\User::find($rnum); 

            if($user != null){
                if(!$user->graphics->isEmpty()){
                    $graphics[] = $user->graphics->first();
                    $i++;
                }
            }
        }
    }   
    return $graphics;
}