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

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

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

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

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

ih99xse1

ih99xse11#

你可以这样做:

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

不过,这只适用于mysql。

hgb9j2n6

hgb9j2n62#

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

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

vjhs03f73#

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

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

相关问题