Laravel Eloquent - случайное получение результатов. - PullRequest
0 голосов
/ 15 января 2020

Laravel версия 4.2

У меня проблемы с этой одной проблемой, с которой я столкнулся. Мне нужно заполнить квоту из 5 результатов, однако у меня размер массива только 3. Мне также нужно, чтобы строки выбирались случайным образом из массива.

* edit: выборка всех результатов невозможна

    $store_id_array = array('111', '222' , '333');

    $reviews = Review::whereIn('store_id', $store_id_array)
                      ->take(5)
                      ->get();

    return Response::json($reviews);

Это вернет 5 результатов, однако только из первого элемента в массиве. Как выбрать случайным образом из элементов массива?

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Для Laravel ниже версии 5:

orderBy(DB::raw('RAND()')) примерно так:

$reviews = Review::whereIn('store_id', $store_id_array)
                      ->orderBy(DB::raw('RAND()'))
                      ->take(5)
                      ->get();

Для Laravel 5.0 +

использовать inRandomOrder() метод:

$reviews = Review::whereIn('store_id', $store_id_array)
                      ->inRandomOrder()
                      ->take(5)
                      ->get();
0 голосов
/ 15 января 2020
     public function index()
        {
           $categories = Category::latest()->get();
           $protfolios = Protfolio::all();
 $randompost = Post::approved()->publish()->take(4)->InRandomOrder()->get();
            $allposts = Post::where('price', 0)->approved()->publish()->take(8)->get();
            $posts = Post::latest()->where('price', '>=', 0)->approved()->publish()->take(8)->get();

            $latestposts = Post::latest()->approved()->publish()->take(8)->get();
            return view('welcome',compact('posts','randompost ','categories','allposts','latestposts','protfolios'));
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...