Laravel Query builder: методы взятия и ограничения - PullRequest
0 голосов
/ 23 сентября 2018

Я не понимаю, как работают эти методы, я пытаюсь вставить последние записи в мою базу данных, и для этого мне нужен конструктор запросов, поэтому я посоветовался с чем-то вроде этого:

 $costo = Costo_promedio::where('producto_nombre_id',$id_prod->id)->latest()->take(1);

Дело в том, что я все еще вставляю все записи, в этих методах take или limit Я отправляю параметр того, сколько я хочу получить, и мой вопрос.Почему это происходит ??

И нет, я не хочу использовать методы first () или get (), которые не работают, когда вы выполняете обработку на стороне сервера в таблице данных

Ответы [ 3 ]

0 голосов
/ 23 сентября 2018

take(1) или limit(1) просто добавляет limit 1 к запросу в компоновщике.Вам нужно вызвать get(), чтобы получить результаты, и он вернет Collection, и вы можете получить его единственный элемент, вызвав first().

$costo = Costo_promedio::where('producto_nombre_id',$id_prod->id)->latest()->take(1)->get()->first();

Или вы можете заменить take(1)->get()->first()просто first()

$costo = Costo_promedio::where('producto_nombre_id',$id_prod->id)->latest()->first()

first() добавит limit 1, получит результаты и вернет единственный элемент, который там есть

0 голосов
/ 23 сентября 2018

Попробуйте это

$costo = Costo_promedio::orderBy('created_at','desc')->take(3)->get();

. Получит последние три записи из базы данных, предполагая, что ваша метка времени называется create_at .

0 голосов
/ 23 сентября 2018

first() не возвращается Коллекция.Возвращает экземпляр модели.Может быть, вы не совсем понимаете, что такое «Коллекция против экземпляра модели».

$costo = Costo_promedio::where('producto_nombre_id',$id_prod->id)->latest()->first();

Альтернатива:

$costo = Costo_promedio::where('producto_nombre_id',$id_prod->id)->latest()->get();

// $costo[0]
...