2015-10-01 27 views
0

基于how get random row laravel-5我调整了我的查询,但仍未收到预期结果。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' 
    ); 
} 

这里部分:

<div id="a-slide" class="carousel slide auto panel-body"> 
    <ol class="carousel-indicators out"> 
     <li class="active" data-slide-to="0" data-target="#a-slide"></li> 
     <li class="" data-slide-to="1" data-target="#a-slide"></li> 
     <li class="" data-slide-to="2" data-target="#a-slide"></li> 
    </ol> 
    <div class="carousel-inner"> 
     <div class="item active" style="padding: 0 16px;"> 
      <p style="font-size: 16px; font-weight: bold;">{!! $articleTitle0 !!}</p> 
      <p class="text-muted">{!! $articleAutor0 !!}</p> 
      <p><strong>Abstract:</strong><br />{!! $articleAbstract0 !!}</p> 
      <p> 
       <a href="$articleSource !!}" target="_blank"> 
        {!! $articleSource0 !!} 
       </a> 
      </p> 
     </div> 

     <div class="item" style="padding: 0 16px;"> 
      <p style="font-size: 16px; font-weight: bold;">{!! $articleTitle1 !!}</p> 
      <p class="text-muted">{!! $articleAutor1 !!}</p> 
      <p><strong>Abstract:</strong><br />{!! $articleAbstract1 !!}</p> 
      <p> 
       <a href="{!! $articleSource1 !!}" target="_blank"> 
        {!! $articleSource1 !!} 
       </a> 
      </p> 
     </div> 

问题是,当我让随机= 3 ($文章= DashArticle:我得到以下错误:“未定义的偏移量:1”

并且当我用户随机= 20(该(')')总数o f表中的行)它的工作原理,但我不会成为任何随机文章,但始终是表的前3行。

我将不胜感激任何帮助!谢谢!

回答

1

问题是随机方法保留原始集合中的键。为了避免这种情况,你应该得到一个纯粹的价值:

$article = DashArticle::where('category', '=', 0)->get()->random(3)->values(); 
0

你可以通过这样得到随机行:

public function article() 
{ 
    $article = DashArticle::orderBy(DB::raw('RAND()'))->take(3)->get(); 

    //pass data to view 
    if(view()->exists('article.list')){ 
     return view('article.list',compact('article')); 
    } 
}