laravel eloquent에서 특정 열을 선택하는 방법


138

테이블에 7 개의 열이 있고이 열 중 두 개만 선택하고 싶다고합시다.

SELECT `name`,`surname` FROM `table` WHERE `id` = '1';

laravel 웅변 모델에서 다음과 같이 보일 수 있습니다

Table::where('id', 1)->get();

그러나이 표현식은 id가 1 인 모든 열을 선택하고 두 개의 열 (name, surname) 만 원한다고 생각합니다. 두 개의 열만 선택하는 방법은 무엇입니까?


질문 해 주셔서 감사합니다. 항상 '클래식'SQL 쿼리 에서이 작업을 올바르게 수행했기 때문에 미친 일이지만 Eloquent를 사용해야하는 것은 혼란 스럽습니다. 작동하기 만하면 행복했으며 쿼리로 인해 메모리가 얼마나 많이 사용되는지 알지 못했습니다. 모든 것을 선택했다.
Jonny Perl

답변:


224

다음과 같이 할 수 있습니다 :

Table::select('name','surname')->where('id', 1)->get();

1
내가 할 수있는 모든 분야를 선택하고 싶다고 가정 해 봅시다
Prince Arora

1
우선, 질문이 있으면 물어보십시오. 그리고 귀하의 경우-포함하지 않으려는 열 대신 모든 열을 언급하십시오. 그렇게 쉽습니다.
Marcin Nabiałek

2
모든 칼럼을 언급하지 않고 다른 방법을 사용할 수 없습니다
Prince Arora

1
단일 테이블이있는 기본 사례에 적용됩니다. 그러나 피벗 테이블에서 관계를 사용하는 경우 피벗 열도 자동으로 선택됩니다.
Benubird

1
@OPV 그냥 실행 SELECT name, surname FROM Table where id = 1SQL 쿼리를
마르신 Nabiałek에게

67
Table::where('id', 1)->get(['name','surname']);

나는 같은 것을 원하지만 다른 방법을 사용하고 있습니다. 모델의 인스턴스를 생성하여 방법을 선택한 다음 열을 선택하고 싶습니다. 즉 $ model = new MyModel (); $ model-> select ([ 'col1', 'col2']); 그러나 이것은 작동하지 않습니다
Dhirender

49

all () 메서드를 사용하면 아래와 같이 테이블에서 특정 열을 선택할 수 있습니다.

ModelName::all('column1', 'column2', 'column3');

참고 : 라 라벨 5.4


나는 같은 것을 원하지만 다른 방법을 사용하고 있습니다. 모델의 인스턴스를 생성하여 방법을 선택한 다음 열을 선택하고 싶습니다. 즉 $ model = new MyModel (); $ model-> select ([ 'col1', 'col2']); 그러나 이것은 작동하지 않습니다.
Dhirender

37

다음 find()과 같이 사용할 수도 있습니다 .

ModelName::find($id, ['name', 'surname']);

$id변수는 모델의 여러 인스턴스를 검색해야하는 경우에 배열 할 수있다.



17

먼저 해당 테이블을 나타내는 모델을 만든 다음 아래의 Eloquent 방법을 사용하여 두 필드의 데이터를 가져옵니다.

Model::where('id', 1)
         ->pluck('name', 'surname')
         ->all();

이것은 많은 관계에서 피벗 테이블과 함께 작동하기 때문에 가장 좋은 대답입니다.
Luciano Fantuzzi 2018 년

8

get ()과 all ()을 사용할 수 있습니다

ModelName::where('a', 1)->get(['column1','column2']);

4

또한 뽑기를 사용할 수 있습니다.

Model::where('id',1)->pluck('column1', 'column2');

6
참고 pluck()가 수정하지 않기 때문에 논의 된 다른 방법보다 효율적인 SELECT ...쿼리를 아니라, 그것은 이미 반환 된 결과 집합에서 작동합니다.
벤 존슨

4

하나의 열 값을 가져옵니다.

Table_Name::find($id)->column_name;

이 절을 where 절과 함께 사용할 수도 있습니다.

Table_Name::where('id',$id)->first()->column_name;

쿼리 작성기에서 :

DB::table('table_names')->find($id)->column_name;

클루 아제와 함께 :

DB::table('table_names')->where('id',$id)->first()->column_name;

또는

DB::table('table_names')->where('id',$id)->first('column_name');

마지막 방법 결과는 배열입니다


3

사용할 수 있습니다 Table::select ('name', 'surname')->where ('id', 1)->get ().

특정 필드 만 선택할 때 나중에 요청의 다른 필드에 액세스하면 다른 쿼리를 작성해야합니다. laravel은 id 필드를 포함하는 것이 일반적으로 좋은 생각이므로 모델 인스턴스에 대한 업데이트를 다시 작성하는 방법을 알고 있습니다.


3

laravel 5.3에서만 get()메소드를 사용 하여 테이블의 특정 열을 얻을 수 있습니다.

YouModelName::get(['id', 'name']);

또는 laravel 5.4에서 원하는 all()필드를 얻는 방법을 사용할 수도 있습니다 .

YourModelName::all('id', 'name');

위의 두 가지 방법을 모두 사용 get()하거나 all()사용할 수도 where()있지만 구문은 다릅니다.

모형 :: all ()

YourModelName::all('id', 'name')->where('id',1);

모델 :: get ()

YourModelName::where('id',1)->get(['id', 'name']);

3

테이블에서 특정 열의 결과를 얻으려면 열 이름을 지정해야합니다.

다음 코드를 사용하십시오 :-

   $result = DB::Table('table_name')->select('column1','column2')->where('id',1)->get();  

예를 들어-

$result = DB::Table('Student')->select('subject','class')->where('id',1)->get();  

다른 사람들이 그것에 대해 배울 수 있도록 귀하의 답변에 약간의 설명을 추가하십시오
Nico Haase

2

가장 일반적인 접근 방법은을 사용하는 것이지만 Model::select모델 클래스 내에서 접근 자 메서드로 정의 된 모든 속성을 렌더링 할 수 있습니다. 따라서 모델에서 속성을 정의하면 :

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Get the user's first name.
     *
     * @param  string  $value
     * @return string
     */
    public function getFirstNameAttribute($value)
    {
        return ucfirst($value);
    }
}

그런 다음 사용하십시오. TableName::select('username')->where('id', 1)->get();

그것은 모두 출력 수집을 의지 first_name하고 username오히려 단지 이름보다.

특정 열을 원할 경우- pluck()단독 사용 또는 선택적으로 select- 와 함께 사용 하는 것이 좋습니다.

TableName::select('username')->where('id', 1)->pluck('username');

또는

TableName::where('id', 1)->pluck('username'); // username값 만으로 구성된 컬렉션을 반환 합니다.

또한 선택적 ->toArray()으로 컬렉션 객체를 배열로 변환 하는 데 사용 합니다.


1

->get()비슷하게 ->all()(그리고 ->first()기타 등등) 매개 변수로 가져올 필드를 가져갈 수 있습니다.

->get/all(['column1','column2'])

그러나 단지와 컬렉션을 다시 가져올 것입니다 column1column2


1

당신도 사용할 수 있습니다 findOrFail()여기에 방법 사용에 그것의 좋은

예외가 발견되지 않으면 404 HTTP 응답이 자동으로 사용자에게 다시 전송됩니다. 이러한 방법을 사용할 때 500 오류가 발생하지 않을 때 404 응답을 반환하기 위해 명시적인 검사를 작성할 필요는 없습니다.

ModelName::findOrFail($id, ['firstName', 'lastName']);

1

단일 행을 가져오고 해당 행에서 단일 열을 가져 오려면 특정 열의 값을 가져 오는 한 줄 코드 find()는 열을 검색하려는 열을 지정 하는 방법과 함께 메서드 를 사용 하는 것입니다.

샘플 코드는 다음과 같습니다.

ModelName::find($id_of_the_record, ['column_name'])->toArray()['column_name'];

0

아래 쿼리를 사용할 수 있습니다.

Table('table')->select('name','surname')->where('id',1)->get();

1
다른 사람들이 그것에 대해 배울 수 있도록 귀하의 답변에 약간의 설명을 추가하십시오
Nico Haase

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.