본문 바로가기
MySql

MySQL Laravel 5 eloquent를 사용한 CONCAT 컬럼

by 베이스 공부 2020. 10. 26.
반응형

나를 라 라벨 초보자로 생각

목표는 두 개의 열이 있습니다. 이제 id 앞에 테이블에서 동일한 행의 구성 요소 이름 을 붙여야합니다.

예를 들어 (일하는 중) ... 나는 Mysql을 좋아합니다.

SELECT CONCAT(components.name," ", components.id) AS ID
FROM   `components` 

그리고 출력은

신분증

|TestComp 40  |
 -------------
|component 41 |
 -------------
|test 42      |

여기 Component는 Model 이름이기 때문에 laravel 웅변적인 방식으로 동일하게 필요합니다. 그래서 나는

$comp=Component::select("CONCAT('name','id') AS ID")->get()

근데 안 돼요.
I think because the syntax is wrong.
올바른 구문으로 친절하게 도와주세요. laravel 모델 사용.

참고 : 위의 쿼리를 작성하여 인터넷에서 사용할 수 있다고 언급했습니다.

User::select(DB::raw('CONCAT(last_name, first_name) AS full_name'))

 

해결 방법

 

쿼리를 DB :: raw 로 래핑해야합니다.

$comp = Component::select(DB::raw("CONCAT('name','id') AS ID"))->get()

또한 이와 같이 쿼리를 수행하고 있으므로이 선택은 select 문에서 다른 모든 필드를 제거하므로 모델이 다르게 작동 할 수 있습니다. 따라서 새 쿼리 없이는 모델에서 다른 필드를 읽을 수 없습니다. 따라서 데이터 수정이 아닌 데이터 읽기에만 이것을 사용하십시오.

또한 좋은 목록으로 만들려면 쿼리를 다음과 같이 수정하는 것이 좋습니다.

$comp = Component::select(DB::raw("CONCAT('name','id') AS display_name"),'id')->get()->pluck('display_name','id');
// dump output to see how it looks.
dd($comp);// array key should be the arrray index, the value the concatted value.

 

참조 페이지 https://stackoverflow.com/questions/42735071

 

 

반응형

댓글