Laravel 5如何使用collections获取多个随机行
Laravel 5如何使用collections获取多个随机行
根据how get random row laravel-5中的方法,我调整了我的查询,但仍然没有得到预期的结果。
我在数据库中有20篇文章,只想随机获取其中的3篇并在页面上展示。
我的类如下所示:
public function article() { $article = DashArticle::where('category', '=', 0)->get()->random(3); $articleTitle0 = $article[0]->titel; $articleAutor0 = $article[0]->autor; $articleAbstract0 = $article[0]->abstract; $articleSource0 = $article[0]->source; $articleTitle1 = $article[1]->titel; $articleAutor1 = $article[1]->autor; $articleAbstract1 = $article[1]->abstract; $articleSource1 = $article[1]->source; $articleTitle2 = $article[2]->titel; $articleAutor2 = $article[2]->autor; $articleAbstract2 = $article[2]->abstract; $articleSource2 = $article[2]->source; return compact( 'articleTitle0', 'articleAutor0', 'articleAbstract0', 'articleSource0', 'articleTitle1', 'articleAutor1', 'articleAbstract1', 'articleSource1', 'articleTitle2', 'articleAutor2', 'articleAbstract2', 'articleSource2' ); }
以下是视图的一部分:
{!! $articleTitle0 !!}
{!! $articleAutor0 !!} 摘要:{!! $articleAbstract0 !!} {!! $articleSource0 !!}
{!! $articleTitle1 !!}
{!! $articleAutor1 !!} 摘要:{!! $articleAbstract1 !!} {!! $articleSource1 !!}
问题是当我设定random = 3时
($article = DashArticle::where('category', '=', 0)->get()->random(3);
我得到以下错误:"Undefined offset: 1"
当我使用random = 20(表中的总行数)时,它能正常工作,但我得不到任何随机文章,而总是得到表中的前3行。
非常感谢任何帮助!谢谢!
Laravel 5如何使用集合获取多个随机行
在Laravel 5中,有时我们需要从数据库中获取多个随机行。下面是一个示例代码,展示了如何通过集合来实现这一目标。
public function article() { $article = DashArticle::orderBy(DB::raw('RAND()'))->take(3)->get(); //将数据传递给视图 if(view()->exists('article.list')){ return view('article.list',compact('article')); } }
上述代码中,我们首先通过`orderBy`函数对结果集进行随机排序,然后使用`take`函数获取指定数量的行数,最后使用`get`方法执行查询操作。通过这种方式,我们可以轻松地获取多个随机行。
以上就是使用集合在Laravel 5中获取多个随机行的方法。如果你有类似的需求,可以尝试使用上述代码来实现。希望对你有所帮助!
在Laravel 5中,如何使用集合获取多个随机行?
问题出现的原因是,开发者需要在Laravel 5中使用集合获取多个随机行。他们希望通过使用集合方法来实现这一目标。
解决方法是,使用以下代码:
$article = DashArticle::where('category', '=', 0)->get()->shuffle()->all();
通过以上代码,开发者可以使用Laravel的集合方法来获取多个随机行。首先,使用`where`方法来筛选出`category`字段等于0的行。然后,使用`get`方法来获取这些行并将其转化为集合。接下来,使用`shuffle`方法来随机排序集合中的元素。最后,使用`all`方法来获取集合中的所有行并将其存储在`$article`变量中。
这样,开发者就可以通过使用Laravel 5中的集合方法来获取多个随机行了。