내 Laravel 4.2 웹 응용 프로그램에 User
및 Group
의 두 모델이 있습니다. 사용자는 여러 그룹의 구성원이 될 수 있으며 그룹은 많은 구성원을 가질 수 있습니다. 두 모델은 따라서 대다 관계로 연결된다 : 그러나,이 작동Laravel - 다 대다 관계에서 특정 열 선택
<?php
$groups = Group::with('users')->all();
?>
: 내 API 자원의
<?php
class User extends Eloquent {
public function groups()
{
return $this->belongsToMany('Group');
}
}
class Group extends Eloquent {
public function users()
{
return $this->belongsToMany('User');
}
}
?>
하나는 응용 프로그램 내에서 사용할 수있는 모든 그룹이 나열 /groups
입니다 JSON 응답은 users
테이블의 모든 필드를 포함합니다 (당연히 $hidden
속성에있는 필드 제외). 이 관계가 전체 테이블 대신 특정 필드 집합 만 반환하도록하겠습니다. 다른 관계 유형에서
내가 쉽게 다음과 같은 문이를 얻을 수 있습니다 (사용자가 하나 개의 그룹에 속할 수 있다는 것을 지금 가정) :
<?php
public function users()
{
return $this->hasMany('User')->select(['id', 'first_name', 'last_name']);
}
?>
그러나 위의 많은 대와 함께 작동하지 않는 것 많은 관계. 분명히 동일한 문제를 언급 한 this question을 보았습니다. Laravel 4.1에서는 이것이 가능하지 않은 것처럼 보입니다. 선택한 대답의 저자 인 tptcat은 Laravel의 Github 문제 추적기에 대한 문제에 대한 링크를 제공하지만 링크가 더 이상 작동하지 않으며 4.2에서이 문제가 아직 열려 있는지 여부를 파악할 수 없습니다.
누구나이 문제를 발견하고 성공적으로 해결할 수 있었습니까?
예. 정상적으로 작동합니다. 그러나 컨트롤러를 통해 다른 작업에서 비슷한 쿼리를 만들면 같은 배열을 모두 전달해야합니다. 나는 다른 종류의 관계로 할 수있는 것과 비슷한 해결책을 목표로 삼고 있었다. – cafonso
모델에서 이러한 일반적인 쿼리를 수행하고 컨트롤러의 다른 동작에서 호출하는 함수를 언제든지 만들 수 있습니다. – Oni