사용자와 자원의 belongsToMany 관계가 있습니다.모델의 모든 행이있는 laravel belongsToMany
사용자 :
public function resources() {
return $this->belongsToMany('Resource')->withPivot(array('value'));
}
리소스 :
public function users() {
return $this->belongsToMany('User')->withPivot(array('value'));
}
중간 테이블 resource_user
입니다. 는 함께 다음 USER_ID가 resource_user 테이블입니다
$resources = Sentry::getUser()->resources()->get();
나는 모든 자료를 얻을 수있다. 지금까지 그렇게 좋았습니다. 그러나 중간 테이블에 user_id가 없어도 모든 자원 항목을 가져올 수 있습니까? 리소스 테이블에 3 개의 리소스가 있다고 가정 해 봅니다. ID 1, 2, 3 I가 중간 테이블의 ID 1로 한 사용자가 I은 단지 2 행 가지고
RESOURCE_ID 1 및 RESOURCE_ID 2 (1) 및 값 50
을 USER_ID 및 1 USER_ID 그리고 가치 100.
그러나 나는 모든 자원을 표시하고 거기에 사용자가 없다면 자원 객체가 있어야하지만 사용자의 관계 모델은 없어야합니다.
whereHas
이이 문제와 관련이 없습니다.
RESOURCE_ID 1 USER_ID 1 값 50
RESOURCE_ID 2 USER_ID 1 값 (100)
RESOURCE_ID 3 :
그래서 내 목표는 3 개 결과,이 같은하지 2. 뭔가를 얻을 수 있습니다 user_id 0 값 0
내가 알아 낸 것 :
012 자원 모델에서 3,516,는이 같은 함수 작성 :
# Get specific User value from resource
public function userValue() {
$res_user = DB::table('resource_user')->whereUserId(Sentry::getUser()->id)->whereResourceId($this->id)->first();
if($res_user){
return $res_user->value;
}else{
return 0;
}
}
을하지만이에 대한 청소기 웅변 방법이 존재 궁금해? 그런 아이디어가 있습니까? 당신이 필터링 폐쇄를 추가 할 수 있습니다에만 열심 부하 현재 사용자에게
$resources = Resource::with('users')->get();
: 나는 "모든 자원은"당신은 단지 Resource
모델을 사용하여 얻을 수 있지만, 당신은 매우 잘 이해하면
http://stackoverflow.com/questions/23328301/laravel-eloquent-left-join-where-null –
나는 그것을 살펴볼 것이다. 감사. – goldlife