2017-10-31 4 views
0

내가 모두 사용자 그룹의 모델 및 사용자 그룹 모델에서 (사용자 그룹에 belongsTo를 방법)이 웅변 쿼리

와 그룹 모델에서 값 가져 오기를 시도하고 작동시킬 수 없습니다 내 쿼리 :

$arrayGroupes = UserGroup::from("user_group as ug") 
->with(['group' => function($query){ 
    $query->select('group_id','name as name_group', DB::raw("IF(restricted=1,1,0) as restricted"), "transfer_only"); 
}])->select("ug.user_id", "u.first_name", "u.surname") 
    ->join("users as u", "u.user_id", "=", "ug.user_id") 
    ->whereIn("ug.group_id", [1,2,3,4,5]) 
    ->where("ug.active", "=", 1)->get(); 

반환 null 그러나 경우에만을 수행합니다

$arrayGroupes = UserGroup::with(['group' => function($query){ 
     $query->select('group_id','name as name_group', DB::raw("IF(restricted=1,1,0) as restricted"), "transfer_only"); 
    }])->whereIn("group_id", [1,2,3,4,5]) 
     ->where("active", "=", 1)->get(); 

작동하지만 사용자 그룹에서 일부 값만 선택할 수는 없습니다 ... 나에 대한 답으로 누군가? 감사합니다.

답변

1
$userGroups = UserGroup::from("user_group as ug") 
    ->join("users as u", "u.user_id", "=", "ug.user_id") 
    ->select("ug.user_id", "ug.group_id", "ug.active", "u.first_name", "u.surname") 
    ->with(['group' => function($query){ 
     $query->select('group_id','name as name_group', DB::raw("IF(restricted=1,1,0) as restricted"), "transfer_only"); 
    }]) 
    ->whereIn("ug.group_id", [1,2,3,4,5]) 
    ->where("ug.active", "=", 1) 
    ->get(); 

검증되지 않은.

+0

시도했지만 작동하지만 모델을 올바르게 사용하지 않는 것 같습니다. 예를 들어, 제 모델 (http://www.newbox.ca/ecrypting-stored-data-with-laravel/)에서 암호화를위한 특성을 사용하고 있지만, 제 그룹의 이름이 암호화되면 다시 암호화됩니다. UserGroup 모델의 그룹 기능과 함께하지만 (UserGroup없이) Group 모델로 가져 오는 경우 name_group을 해독합니다.하지만 도움을 주셔서 감사합니다! – devvmiller

+0

@devvmiller 나는 그것을 얻지 않는다. 쿼리에서 UserGroup에서 그룹 이름을 검색 할 수 있습니다. '$ userGroup-> group-> name'은 query를 가진 메소드에서 관계를 반환하기 때문입니다. –

+1

당신의 도움에 감사드립니다. – devvmiller