使用eloquent/clarbel5.x随机获取相关项目

vwoqyblh  于 2021-06-25  发布在  Mysql
关注(0)|答案(3)|浏览(385)

简单地说,如果我有一个实体有许多相关项(hasmany),我如何获取该实体及其相关项,这些相关行是随机排序的
我喜欢这样:

  1. $question = Question::with('categories', 'answers')->where( _some_parameters_ ) ... ->get();

如何在结果对象中洗牌这些“答案”?

ih99xse1

ih99xse11#

你可以这样做:

  1. $question = Question::with(['categories', 'answers' => function($q) {
  2. $q->orderByRaw('RAND()');
  3. }])->where( _some_parameters_ )
  4. ->get();

不过,这只适用于mysql。

hgb9j2n6

hgb9j2n62#

要在laravel而不是mysql中执行“shuffle”,请执行以下操作:

  1. $question = Question::with('categories', 'answers')->
  2. where( _some_parameters_ ) ... ->get()->shuffle();
vjhs03f7

vjhs03f73#

在laravel 5.2中,您可以尝试以下代码:

  1. User::inRandomOrder()->get();

相关问题