sourcecode

Larabel: MySQL 쿼리에서 단일 값 가져오기

copyscript 2022. 9. 18. 10:04
반응형

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지정된 열의 값을 가진 배열을 가져옵니다.그래서 더 이상 사용되지 않지만, 더 이상 예전처럼 되지 않습니다.

즉, 간단한 대답은valueLarabel 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');

출처: trust me(믿어주세요)


@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

반응형