Laravel Eloquent 쿼리에서 테이블의 별칭을 지정하는 방법 (또는 쿼리 작성기를 사용하는 방법)?
라 라벨의 쿼리 빌더를 사용한다고 가정 해 봅시다 :
$users = DB::table('really_long_table_name')
->select('really_long_table_name.id')
->get();
이 SQL과 동등한 것을 찾고 있습니다.
really_long_table_name AS short_name
이것은 많은 선택과 위치를 입력해야 할 때 특히 유용합니다 (또는 일반적으로 선택의 열 별칭에도 별칭을 포함시키고 결과 배열에 사용됩니다). 테이블 별칭이 없으면 나를 위해 더 많은 타이핑이 있으며 모든 것이 훨씬 덜 읽기 쉽습니다. 라 라벨 문서, 어떤 아이디어에서도 답을 찾을 수 없습니까?
Laravel은로 테이블 및 열에서 별칭을 지원합니다 AS
. 시험
$users = DB::table('really_long_table_name AS t')
->select('t.id AS uid')
->get();
멋진 tinker
도구 로 실제 동작을 보자
$ PHP 장인 땜장이 [1]> Schema :: create ( 'really_long_table_name', function ($ table) {$ table-> increments ( 'id');}); // 없는 [2]> DB :: table ( 'really_long_table_name')-> insert ([ 'id'=> null]); // 진실 [3]> DB :: table ( 'really_long_table_name AS t')-> select ( 't.id AS uid')-> get (); // 배열 ( // 0 => 객체 (stdClass) ( // 'uid'=> '1' //) //)
웅변 모델에서 별칭을 사용하려면 다음과 같이 코드를 수정하십시오.
Item
::from( 'items as items_alias' )
->join( 'attachments as att', DB::raw( 'att.item_id' ), '=', DB::raw( 'items_alias.id' ) )
->select( DB::raw( 'items_alias.*' ) )
->get();
그러면 테이블 이름에 테이블 접두사가 자동으로 추가되고 Items
모델 인스턴스가 반환 됩니다. 베어 쿼리 결과가 아닙니다. 추가 DB::raw
하면 laravel이 별칭에 테이블 접두사를 추가 하지 못합니다.
Eloquent에서 사용합니다. 모델 위에 추가
protected $table = 'table_name as alias'
// table_name은 데이터베이스와 동일해야합니다.
.. 그런 다음 쿼리에서 사용하십시오.
ModelName::query()->select(alias.id, alias.name)
어떻게 할 수 있습니까? 나는 누군가에게 분명해 지도록 가입하는 예를 보여줄 것이다.
$products = DB::table('products AS pr')
->leftJoin('product_families AS pf', 'pf.id', '=', 'pr.product_family_id')
->select('pr.id as id', 'pf.name as family_name', 'pf.id as family')
->orderBy('pr.id', 'desc')
->get();
도움이 되었기를 바랍니다.
더 적은 코드를 사용하여 다음을 작성할 수 있습니다.
$users = DB::table('really_long_table_name')
->get(array('really_long_table_name.field_very_long_name as short_name'));
물론 더 많은 필드를 선택하려면 ""를 작성하고 더 추가하십시오.
$users = DB::table('really_long_table_name')
->get(array('really_long_table_name.field_very_long_name as short_name', 'really_long_table_name.another_field as other', 'and_another'));
복잡한 조인 쿼리를 사용할 때 매우 실용적입니다.
AMIB 답변과 동일합니다. 소프트 삭제 오류 "알 수없는 열 'table_alias.deleted_at'"에 대해 추가 ->withTrashed()
한 다음 직접 처리하십시오.->whereRaw('items_alias.deleted_at IS NULL')
'Programing' 카테고리의 다른 글
Google지도와 같은 위치 활성화 대화 상자를 표시하는 방법 (0) | 2020.07.11 |
---|---|
Xcode-그러나… 아카이브는 어디에 있습니까? (0) | 2020.07.11 |
파이썬에서 주어진 픽셀의 RGB 값을 읽는 방법은 무엇입니까? (0) | 2020.07.11 |
프로그래밍 방식으로 python.exe 위치를 얻는 방법? (0) | 2020.07.11 |
오늘 날짜에서 2 개월을 뺀 SQL 쿼리 (0) | 2020.07.11 |