역할 배열을 사용하여 $users
의 목록을 반환하려고합니다.belongsToMany 관계가 연결된 객체를 반환 할 수 없습니다.
여기 내 컨트롤러 :
$users = DB::table('users')->take(5)->skip(2)->get();
foreach ($users as $user)
{
$user = User::with('roles')->find($user->id);
}
return Response::json(array(
'users' => $users
));
그리고 여기 모델 관계이다 :
public function roles()
{
return $this->belongsToMany('Role')->withTimestamps();
}
그러나 이것은 단지에 부착 된 역할없이 사용자를 반환합니다. 그러나 이렇게하면 :
return Response::json(array(
'users' => User::with('roles')->get()
));
각 사용자에게 부여 된 역할에 대한 전체 목록을 얻을 수 있습니다. 그래서 내가 뭘 잘못하고 있니? 나는이 할 경우
이상하게 그런 다음
return Response::json(array(
'users' => User::with('roles')->find($user->id)
));
을이 역할을 가진 사용자가 내가 기대했던, 그래서 왜 안 foreach
성명에서 반환로 있음을 반환?
컨트롤러에서'$ users'를 반환하면'foreach' 루프는'$ user'에서'User' 인스턴스를 생성하지만'$ users'에 영향을 미치지 않기 때문에 응답에서 다시 보내지지 않습니다 어떠한 방식으로. 단어에 넣기는 어렵지만 'User :: with ...'를 호출하면 원래 '$ users' 배열에 아무런 영향을 미치지 않는다는 것을 이해하고 있습니까? (편집 : 그의 답변에서 @lukasgeiter가 말한 것) –