2015-10-01 47 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')); 
    } 
}