Laravel 5如何使用collections获取多个随机行

5 浏览
0 Comments

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行。

非常感谢任何帮助!谢谢!

0
0 Comments

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中获取多个随机行的方法。如果你有类似的需求,可以尝试使用上述代码来实现。希望对你有所帮助!

0
0 Comments

在Laravel 5中,如何使用集合获取多个随机行?

问题出现的原因是,开发者需要在Laravel 5中使用集合获取多个随机行。他们希望通过使用集合方法来实现这一目标。

解决方法是,使用以下代码:

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

通过以上代码,开发者可以使用Laravel的集合方法来获取多个随机行。首先,使用`where`方法来筛选出`category`字段等于0的行。然后,使用`get`方法来获取这些行并将其转化为集合。接下来,使用`shuffle`方法来随机排序集合中的元素。最后,使用`all`方法来获取集合中的所有行并将其存储在`$article`变量中。

这样,开发者就可以通过使用Laravel 5中的集合方法来获取多个随机行了。

0
0 Comments

问题的原因:

在Laravel 5中,当使用集合的random方法获取多个随机行时,会保留原始集合的键。这可能会导致一些不希望的结果。

解决方法:

为了避免上述问题,可以通过获取纯值来解决。具体操作如下:

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

通过这种方法,我们可以获得没有保留原始集合键的随机行。这样可以确保我们得到的结果是我们期望的。

0