Pobieranie pojedynczej wartości z DB :: select w Laravel 7.x
Używam Laravel DB::select
do uruchomienia kwerendy w celu uzyskania MAX()
wartości. Chcę tylko jednej wartości kolumny z wyniku pojedynczego wiersza. Jakiej metody używam, aby uzyskać to z DB::select()
wyciągu?
Znalazłem tę odpowiedź, wprowadź tutaj opis linku, który zaoferował zarówno pluck()
i value()
. Zachowanie pluck()
zmieniło się od 5.3, więc to nie była odpowiedź. Jednak kiedy użyłem value()
, nie uzyskałem oczekiwanej wartości. Zamiast tego otrzymałem błąd dotyczący tablicy:
$query = DB::select('SELECT max(sort) AS sort FROM man_pos WHERE manual_id = ?', [$manual_id]);
dd($query);
Błąd HTTP 500 Wewnętrzny błąd serwera
Wywołanie funkcji składowej value () w tablicy
Oczywiście mogę przejść przez tablicę, aby wyciągnąć wartość, ale celem korzystania z metody jest uniknięcie takiej dodatkowej sztywności.
Na prośbę w komentarzach, oto kilka przykładowych danych i oczekiwany wynik. Najpierw zapytanie:
MariaDB [dev]> SELECT MAX(sort) FROM man_pos WHERE manual_id = 1;
+-----------+
| MAX(sort) |
+-----------+
| 3 |
+-----------+
Po drugie, co chciałbym uzyskać:
$max_sort = DB::select('SELECT max(sort) AS sort FROM man_pos WHERE manual_id = ?', [$manual_id])->getSingleValue(); dd($max_sort);
^ 3
Odpowiedzi
Możesz po prostu spróbować użyć wbudowanej MAX
funkcji Laravel :
$max_sort = DB::table('man_pos') ->where('manual_id', $manual_id)
->max('sort');
chcesz mieć jedną kolumnę dla jednej maksymalnej wartości zwracanej
$max_sort = DB::table('man_pos')->select('sort')->where('manual_id', '=', $manual_id)->max('sort');