【问题标题】:Laravel 5 how to get many random rows using collectionsLaravel 5如何使用集合获取许多随机行
【发布时间】:2015-12-29 07:05:01
【问题描述】:

基于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'
    );
}

这里是视图的一部分:

<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 ($article = DashArticle::where('category', '=', 0)->get()->random(3); 我收到以下错误:“未定义的偏移量:1”

当我使用 random = 20(表格中的总行数)时,它可以工作,但我不会成为任何随机文章,但总是表格的前 3 行。

如果有任何帮助,我将不胜感激!谢谢!

【问题讨论】:

    标签: php random laravel-5.1


    【解决方案1】:

    试试这个

    $article = DashArticle::where('category', '=', 0)->get()->shuffle()->all();
    

    【讨论】:

      【解决方案2】:

      你可以像这样得到随机行:

      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'));
          }
      }
      

      【讨论】:

        【解决方案3】:

        问题在于随机方法会保留原始集合中的密钥。为了避免这种情况,你应该得到一个纯值:

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

        【讨论】:

          猜你喜欢
          • 2015-01-14
          • 2011-11-01
          • 2020-02-23
          • 1970-01-01
          • 1970-01-01
          • 2023-02-24
          • 2018-03-29
          • 2023-01-24
          • 1970-01-01
          相关资源
          最近更新 更多