2016-09-22 18 views
0

ifステートメント "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に存在しないユーザーには余裕を持たないようです。

関連する問題