我正在做一个基于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'));
}
我只是想检查一个选定的随机用户是否提交了任何图形,如果没有,请选择另一个随机用户,我完全不知道如何做到这一点?
答案 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;
}