2014-12-11 4 views
0

두 테이블 userscars이 있고 cars의 열은 이며 사용자의 id이며 가입해야합니다. userscars은 모두 name이라는 열을 가지고 있으며 재정의하고 있습니다. 나는 둘 다 계속하지만 다른 이름으로, 예를 들어 car_nameuser_name을 갖고 싶습니다. 여기동일한 열이있는 조인 테이블

는 내가 뭘 어떻게 : 나는 car_name를 인쇄하려고하지만 여전히 이름을 무시하고 내가 name를 인쇄하면 여전히 user의 이름 대신 car을 반환하는 경우 그것은 작동

$columns = [ 
    DB::raw('cars.name as car_name') 
]; 

$cars = Cars::join('users', 'users.id', '=', 'cars.owner')->get($columns); 

.

이 작업을 수행 할 수있는 방법이 있습니까?

+0

그리고 users.name을 추가하고 별명을 지정하면? 작동하지 않습니까? – Ragnar

+0

무슨 뜻인지 이해가 안됩니다. 질문에 대한 실수를 깨달았습니다. 나는 편집 할 것입니다. – yayuj

+1

car.name DB :: raw ('cars.name as car_name')의 별칭이 있습니다. 사용자와 동일한 작업을 수행 할 수 있다고 생각합니다. DB :: raw ('user.name as user_name'), 나는 웅변에 대해 모르지만 그것은 SQL 쿼리와 같습니다. – Ragnar

답변

1

당신은 select() clause directly in your query을 사용할 수 있습니다 .. 사용할 필요를 DB::raw() :

$cars = Cars::join('users', 'users.id', '=', 'cars.owner') 
      ->select('*','cars.name as car_name') 
      ->get(); 
이의 문제는 당신이 요구하는대로 반복 열을 끝낼 것입니다

모든 것을위한 DB와 새로운 이름을 가진 필드. 그게 문제는 아니지만 선택할 필드를 명시 적으로 지정하는 것이 더 좋을 수도 있습니다.

$cars = Cars::join('users', 'users.id', '=', 'cars.owner') 
      ->select('users.name as user_name','cars.name as car_name', 'whatever_else') 
      ->get(); 
1

나는 당신이 원하는 것을 할 수 있다고 생각하지 않는다.하지만 선택할 수는있다. 이 희망이 작동하지합니다

$columns = [ 
    '*', 
    'users.name as user_name', 
    'cars.name as car_name' 
]; 

$cars = Cars::join('users', 'users.id', '=', 'cars.owner')->select($columns)->get(); 
관련 문제