Eloquent에는 테마와 사용자라는 2 개의 조인 된 테이블이 있습니다.
테마 모델 :
public function user() {
return $this->belongs_to('User');
}
사용자 모델 :
public function themes() {
return $this->has_many('Theme');
}
내 Eloquent API 호출은 다음과 같습니다.
return Response::eloquent(Theme::with('user')->get());
테마의 모든 열 (괜찮음)과 사용자의 모든 열 (괜찮지 않음)을 반환합니다. 사용자 모델의 ‘사용자 이름’열만 필요합니다. 쿼리를 어떻게 제한 할 수 있습니까?
답변
모델을 변경하여 선택하려는 열을 지정하십시오.
public function user() {
return $this->belongs_to('User')->select(array('id', 'username'));
}
그리고 여러분이 참여하고있는 칼럼을 포함하는 것을 잊지 마십시오.
답변
Laravel> = 5.2의 경우
사용 > 뽑은 () – 방법
$roles = DB::table('roles')->pluck('title');
단일 열의 값을 포함하는 배열을 검색하려면 pluck 메소드를 사용할 수 있습니다.
Laravel <= 5.1의 경우
사용 -> 목록 () 방법
$roles = DB::table('roles')->lists('title');
이 메서드는 역할 제목 배열을 반환합니다. 반환 된 배열에 대해 사용자 지정 키 열을 지정할 수도 있습니다.
답변
다음과 같이 get 매개 변수에 필드 배열을 제공 할 수 있습니다.
return Response::eloquent(Theme::with('user')->get(array('user.username'));
UPDATE (for Laravel 5.2) 문서 에서 다음을 수행 할 수 있습니다.
$response = DB::table('themes')
->select('themes.*', 'users.username')
->join('users', 'users.id', '=', 'themes.user_id')
->get();
답변
알아요, 당신은 Eloquent를 요청하지만 Fluent Query Builder로 할 수 있습니다
$data = DB::table('themes')
->join('users', 'users.id', '=', 'themes.user_id')
->get(array('themes.*', 'users.username'));
답변
이것이 내가하는 방법
$posts = Post::with(['category' => function($query){
$query->select('id', 'name');
}])->get();
user2317976의 첫 번째 답변이 나를 위해 작동하지 않았으며 laravel 5.1을 사용하고 있습니다.
답변
또 다른 옵션은 $hidden
모델 의 속성을 사용 하여 표시하지 않을 열을 숨기는 것입니다. 이 속성을 즉시 정의하거나 모델에 기본값을 설정할 수 있습니다.
public static $hidden = array('password');
이제 JSON 응답을 반환 할 때 사용자 비밀번호가 숨겨집니다.
비슷한 방식으로 즉석에서 설정할 수도 있습니다.
User::$hidden = array('password');
답변
페이지 매김과 함께 사용
$data = DB::table('themes')
->join('users', 'users.id', '=', 'themes.user_id')
->select('themes.*', 'users.username')
->paginate(6);