2016-09-22 4 views
0

"if ($ user_roles == 3)"문을 작성했으며이 $ user_roles의 값이 "3"인 조건을 true로 설정했습니다. 결과는 항상 거짓입니다.if 문이 true로 평가되지 않는 경우 (필요한 경우에도)

public function ViewSponsorInfo($sponsor_id) 
{ 
    $id = $sponsor_id; 
    $user_id = User::where('id','=',$id)->get(); 
    $user_roles = []; 
    foreach ($user_id as $id) { 
     array_push($user_roles, $id->role); 
    }/* 
    dd($user_roles);*/ 

    if ($user_roles == 3) { 
     $orga = Organization::where('orga_id','=',$sponsor_id)->get(); 
     dd($orga); 
     return view('pages.Ngo.View-Sponsor-Information',compact('orga')); 
    }else{ 
     $indi = Individual::where('indi_id','=',$sponsor_id)->get(); 
     dd($indi); 
     return view('pages.Ngo.View-Sponsor-Information',compact('indi')); 
    } 
} 

답변

3

$user_roles 3하지 않으며 결코 수 있습니다

여기 아래에있는 내 코드입니다. 그것은 배열입니다. 그러나 의 내용은 3 일 수 있습니다.

보십시오 참조

if(in_array(3, $user_roles)) { ...} 

: in_array

1

$user_roles 배열이다. 따라서 if 문은 항상 false입니다.

0

생각해보십시오.

foreach ($user_id as $id) { 
    array_push($user_roles, array('role' => $id->role)); 
}/* 
dd($user_roles);*/ 

foreach ($user_roles as $user_role) { 
if ($user_role->role == 3) { 
    $orga = Organization::where('orga_id','=',$sponsor_id)->get(); 
    dd($orga); 
    return view('pages.Ngo.View-Sponsor-Information',compact('orga')); 
}else{ 
    $indi = Individual::where('indi_id','=',$sponsor_id)->get(); 
    dd($indi); 
    return view('pages.Ngo.View-Sponsor-Information',compact('indi')); 
} 
}  

하십시오

foreach ($user_id as $id) { 
    array_push($user_roles, array('role' => $id->role)); 
}/* 
dd($user_roles);*/ 

foreach ($user_roles as $user_role) { 
if ($user_role['role'] == 3) { 
    $orga = Organization::where('orga_id','=',$sponsor_id)->get(); 
    dd($orga); 
    return view('pages.Ngo.View-Sponsor-Information',compact('orga')); 
}else{ 
    $indi = Individual::where('indi_id','=',$sponsor_id)->get(); 
    dd($indi); 
    return view('pages.Ngo.View-Sponsor-Information',compact('indi')); 
} 
} 

또는

그 위에 뭔가 후이 일을 시도했다.

0

ViewSponsorInfo()라는 이름으로 기능을 표시 한 것을 판단하는 것은 해당 사용자가 db에서 유일한 역할 인지를 감지하는 데에만 관심이 있습니다.

결과는 바이너리가 아닙니다. 그들은 3이거나 그렇지 않습니다. 결과를 통해 반복 할 필요가 없습니다.

$user_id = User::where('id','=',$id)->get(); 
if($user_id[0] !== 3) { //*** 
    doSponsorLink(); 
}else{ 
    doNonSponsorLink(); 
} 

그래서 어쩌면 심지어 단순히 if($user_id)이다, Laravel 또는 사용중인 DB 층에 익숙하지 않다.

테스트되지 않은 사용자는 여기에 사용자가 1 개의 단일 역할 만 가질 수 있다고 가정하고 있으며 db에 존재하지 않는 사용자에 대해서는 허용하지 않는 것으로 보입니다.