You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10中如何在一对多关联中随机获取问题及选项

解决方案

首先纠正视图中的错误:你在循环选项时误写了变量名,应该用循环内的单个问题实例$question,而不是集合$Questions,修改后的视图代码如下:

@foreach($Questions as $question)
   {{$question->DbQuestions}}
   @foreach($question->Option as $option)
      {{$option->DbOptions}}
   @endforeach
@endforeach

接下来实现选项的随机排序,有两种常用方式:

方式一:仅在当前查询中随机选项

在控制器的关联预加载中,通过闭包给Option添加随机排序逻辑,这样只有这次查询的选项是随机的,不影响其他地方调用关联:

public function showQ(){
    return view('my_view',[
        'Questions' => Question::inRandomOrder()
            ->with(['Option' => function($query) {
                $query->inRandomOrder();
            }])
            ->get(),
    ]);
}

方式二:全局关联返回随机选项

如果希望每次获取Question的Option关联时,选项都是随机排序的,可以直接修改Question模型的关联方法:

public function Option(): HasMany {
    return $this->hasMany(Option::class)->inRandomOrder();
}

这样控制器代码无需修改,保持你原来的写法即可,每次获取的选项都会自动随机排序。

内容的提问来源于stack exchange,提问作者Albert Ndizeye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:02:40