Laravel Eloquent -> take (5) не работает, если получил меньше результатов - PullRequest
0 голосов
/ 11 октября 2018

в настоящее время работает на веб-сайте, где мне нужно составить список, но на домашней странице я хочу показать уменьшенную версию списка максимум с 5 элементами, поэтому обычно это будет работать.

$items = collect(DB::select('EXEC [List] ?',[
                Carbon::now()->year
            ])->take(5));

Но сейчасс момента появления нового веб-сайта на нем не было более 5 записей, и каждый новый год получаемые записи также будут меньше 5. пытались также использовать limit (5), но это также, похоже, не работает.у вас есть решение для этого?

если что-то не совсем ясно, просто попросите больного попытаться объяснить это лучше.

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Похоже, что вы используете эту функцию в массиве.Попробуйте сделать это в 2 шага.
Первый: получить коллекцию.
Второй: работать с ним.

//$items = collect(...) 
$items = $items->take(5);

edit Вы используете его в этом массиве.Внутренний парант закрывает ваш вызов DB :: select ()!try:

 $items = collect(DB::select('EXEC [List] ?', [Carbon::now()->year]))
   ->take(5);  

edit 2:
Как уже упоминалось apokryfos, этот вызов становится все дороже с ростом базы данных.Когда вам нужны только эти 5 записей, вы можете попробовать что-то вроде этого:

$items = DB::table('TABLENAME')
    ->select('*')
    //assuming you have a created_at col which can be handled as date.
    ->whereYear('created_at', '=', date('Y'))   
    ->limit(5)
    ->get();   

Это должно подготовить менее дорогой вызов базы данных, поскольку вы не выбираете все строки.

0 голосов
/ 11 октября 2018

ну только что нашел ответ.запрос, который я использовал, был

collect(DB::select()->take());

, но вместо этого он должен был быть

collect(DB::select())->take();

иногда я действительно ненавижу такие мелочи, как это, всегда их пропускаю.

0 голосов
/ 11 октября 2018

Пожалуйста, отметьте это $item = collect(DB::table('item')->select('*')->take(5)->get()); может быть, вы забыли добавить ->get() в запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...