라 라벨 7.x에서 DB :: select에서 단일 값 가져 오기

Dec 01 2020

DB::select을 얻기 위해 쿼리를 실행하기 위해 Laravel을 사용 하고 MAX()있습니다. 단일 행 결과의 단일 열 값만 원합니다. DB::select()성명서 에서이 정보를 얻으려면 어떤 방법을 사용 합니까?

이 답변 은 및을 모두 제공하는 여기에 링크 설명을 입력했습니다 . 의 동작은 5.3 이후 변경되었으므로 대답이 아닙니다. 그러나을 사용했을 때 기대했던 값을 얻지 못했습니다. 대신 배열에 대한 오류가 발생했습니다.pluck()value()pluck()value()

$query = DB::select('SELECT max(sort) AS sort FROM man_pos WHERE manual_id = ?', [$manual_id]);
dd($query);

오류 HTTP 500 내부 서버 오류

배열의 멤버 함수 value () 호출

물론 배열을 가로 질러 값을 가져올 수 있지만 메서드 사용의 요점은 이러한 추가 리가 마롤을 피하는 것입니다.


의견 요청에 따라 다음은 몇 가지 샘플 데이터와 예상 결과입니다. 먼저 쿼리 :

MariaDB [dev]> SELECT MAX(sort) FROM man_pos WHERE manual_id = 1;
+-----------+
| MAX(sort) |
+-----------+
|         3 |
+-----------+

둘째, 내가 얻고 싶은 것 :

$max_sort = DB::select('SELECT max(sort) AS sort FROM man_pos WHERE manual_id = ?', [$manual_id])->getSingleValue(); dd($max_sort);

^ 3

답변

2 TimBiegeleisen Dec 01 2020 at 12:29

Laravel의 내장 MAX함수를 사용해 볼 수 있습니다 .

$max_sort = DB::table('man_pos') ->where('manual_id', $manual_id)
    ->max('sort');
NurbekBoymurodov Dec 01 2020 at 12:47

단일 최대 반환 단일 값에 대해 단일 열을 원합니다.

$max_sort = DB::table('man_pos')->select('sort')->where('manual_id', '=', $manual_id)->max('sort');