Larabel: MySQL 쿼리에서 단일 값 가져오기
larabel을 사용하여 MySQL 데이터베이스에서 단일 값을 가져오려고 하지만 어레이를 가져오는 문제가 있습니다. MySQL 명령줄에 대한 쿼리 결과는 다음과 같습니다.
select groupName from users;
+-----------+
| groupName |
+-----------+
| Admin |
+-----------+
내 라라벨 기능:
public static function PermitAddNewUser(){
$username=Session::get('key');
$data=DB::select("select groupName from users where username='$username';");
return $data;
}
$data 값은 value= Admin인 문자열이어야 합니다.
된 것은: "이것들" 입니다.[{"groupName":"Admin"}]
또 다른 편집:버전 5.2 이후 pluck
더 이상 권장되지 않습니다.새로운 동작을 했을 뿐입니다(와 같음).lists
" " - " " " :
편집: 버전 5.1 이후 pluck
"사용할 수 없습니다"를 해 주세요.value
★★★★
DB::table('users')->where('username', $username)->value('groupName');
// valid for L4 / L5.0 only
DB::table('users')->where('username', $username)->pluck('groupName');
단일 인 것은 of of of of of of of of of of of of가 됩니다.groupName
첫 번째 행의 필드를 찾았습니다.
SIDE NOTE reg. @TomasButeler 코멘트: Larabel은 합리적인 버전 관리를 하지 않기 때문에, 이러한 케이스가 있는 경우가 있습니다.이 답을 쓸 때 우리는pluck
(Larabel 4.*의 5.0) SINGLE의 SINGLE의 SINGLE의 SINGLE의 SINGLE.
1 L5.1의 pluck
을 받지 못하고'이러다'라고 해서value
교환 방법.
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.pluck
사실 사라지지 않았다.폐지되다lists
) - .1 (L5.2) - Query Builder의 불일치 에 발생하였습니다.pluck
수집과 쿼리에 대해 다르게 작용한 것이 그 이유입니다.
편집:
해 빡빡 about about about about about about about about about about ★★★pluck()
많은 사람들이 코멘트했듯이 가장 쉬운 방법은 다음과 같습니다.
return DB::table('users')->where('username', $username)->pluck('groupName');
그러면 요청된 행의 첫 번째 결과만 문자열로 직접 반환됩니다.
유창한 쿼리 빌더를 사용하면 어레이를 얻을 수 있습니다.쿼리 빌더는 해당 쿼리에서 몇 개의 행이 돌아올지 모릅니다.조금 더 깨끗하게 하기 위해 할 수 있는 일은 다음과 같습니다.
$result = DB::table('users')->select('groupName')->where('username', $username)->first();
first()
하고 배열은 하지 않습니다.과 같이할 수 .queryBuilder는 1개의 행을 반환할 수 있습니다.그러면 다음과 같은 작업을 수행할 수 있습니다.
return $result->groupName;
도움이 되었으면 좋겠다
Laravel > = 5.3의 시점에서는 가치를 사용하는 것이 가장 좋은 방법입니다.
$groupName = \App\User::where('username',$username)->value('groupName');
또는
use App\User;//at top of controller
$groupName = User::where('username',$username)->value('groupName');//inside controller function
물론 Larabel의 데이터베이스 테이블과 대화하는 가장 효율적인 사용자용 모델 테이블을 작성해야 합니다.
[EDIT] 의 예상 출력pluck
기능이 Larabel 5.1에서 5.2로 변경되었습니다.따라서 5.1에서는 권장되지 않는 것으로 마크되어 있습니다.
Larabel 5.1에서는pluck
쿼리의 첫 번째 결과에서 단일 열의 값을 가져옵니다.
라라벨 5.2에서는pluck
지정된 열의 값을 가진 배열을 가져옵니다.그래서 더 이상 사용되지 않지만, 더 이상 예전처럼 되지 않습니다.
즉, 간단한 대답은value
Larabel 5.1 이상을 사용하는 경우 첫 번째 행에서 하나의 컬럼을 사용할 수 있습니다.
댓글로 지적해 주신 Tomas Buteler 씨께 감사드립니다.
[ORIGINAL] Larabel 5.1을 사용하고 있는 분들을 위해 pluc()는 폐지되었으며 Larabel 5.2에서는 완전히 삭제됩니다.
다음을 사용하여 나중에 코드를 검증하는 것을 고려하십시오.value()
대신.
return DB::table('users')->where('username', $username)->value('groupName');
쿼리 작성기를 사용하여 groupName과 같은 단일 열 값을 가져옵니다.
$groupName = DB::table('users')->where('username', $username)->pluck('groupName');
Larabel 5.1의 경우
$groupName=DB::table('users')->where('username', $username)->value('groupName');
또는 사용자 모델을 사용하여 단일 열 값을 가져옵니다.
$groupName = User::where('username', $username)->pluck('groupName');
또는 첫 번째 행을 가져온 다음 분할하여 단일 열 값을 얻습니다.
$data = User::where('username', $username)->first();
if($data)
$groupName=$data->groupName;
이어서 Laravel 7.x 또는 8.x 로 실행하는 방법을 나타냅니다.
$email = DB::table('users')->where('name', 'John')->value('email');
@Shuhad jaman 코멘트를 바탕으로 갱신되었습니다.
Larabel 5.6에서는 매우 간단한 솔루션을 제공합니다.
User::where('username', $username)->first()->groupName;
groupName을 문자열로 반환합니다.
언급URL : https://stackoverflow.com/questions/25930841/laravel-getting-a-single-value-from-a-mysql-query
'sourcecode' 카테고리의 다른 글
웹 사이트를 방문하는 컴퓨터를 고유하게 식별하려면 어떻게 해야 합니까? (0) | 2022.09.18 |
---|---|
Matplotlib가 있는 Python의 플롯 시간 (0) | 2022.09.18 |
sys.stdout 사용방법flush() 메서드 (0) | 2022.09.18 |
자바에는 '조건이 true가 될 때까지 차단' 함수가 있습니까? (0) | 2022.09.18 |
iPhone 및 Android의 JavaScript에서 손가락 스와이프 감지 (0) | 2022.09.18 |