2016-09-22 70 views
0

我創建了if語句「if($ user_roles == 3)」,並且此$ user_roles的值爲「3」,條件應該爲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,從來沒有。這是一個數組。然而,其內容可以是三個。

嘗試:

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

供參考:in_array

1

$user_roles是一個數組。所以你的if語句總是假的。

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()的名字只是感興趣的是如何檢測這個用戶是否在你的數據庫中有唯一的角色'3'。

我的意思是結果是二進制的不是嗎?要麼他們是3或者他們不是,不需要循環通過結果。

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

我不熟悉Laravel或者您正在使用的數據庫層,所以這也許就是甚至乾脆if($user_id)

未經測試,在這裏我假設用戶只能擁有1個單一角色,而且我們似乎沒有爲不存在於db中的用戶提供優惠。