2017-09-24 3 views
0

でLaravelに一つだけの結果を取得する:ループはこれが私のクエリでYajraのDataTable

$albix = DB::table('albi') 
    ->select(['albi.id']) 
    ->join('albi_user', 'albi.id', '=', 'albi_user.albi_id') 
    ->where('user_id', '=', $user_id) 
    ->get(); 

これは、複数のアイテムを取得する必要があり、私のforeachループです:

foreach ($albix as $a) { 
    return $albi->id == $a->id ? 'alert-warning' : ''; 
} 

はなぜこれが動作しませんか?

+0

最初の結果を取得したい場合は 'get()'を 'first() 'に置き換えてください – inet123

+0

私は複数の項目を取得したいのですが、このforeachでは1つだけ取り出します – Marko

答えて

0

戻り、データベースの結果を通して、あなたのループ

if($albi->id == $a->id){ return 'alert-warning';}

$data = [] 
foreach ($albix as $a) { 
    $data[$a->id] = $albi->id == $a->id ? 'alert-warning' : ''; 
} 
return $data; 
+0

else条件では動作しません!あなたが理由を知っている? – Marko

+0

if文が実行されないelseループが停止する フルコードは表示されませんが、 $ data = []; foreach($ albix as $ a){ $ data [$ a-> id] = $ albi-> id == $ a-> id? '警告警告': ''; } return $ data; –

0

ループを停止し、idが同じであれば、正しいオブジェクトを返す:あなたのケースでは

$user = (object)['id' => '123']; 
foreach ($db_results as $row) { 
    if ($user->id == $row->id) { 
     return $row; 
    } 
} 
return []; // id not found, handle your fallback 

を:

foreach ($albix as $a) { 
    if ($albi->id == $a->id) { 
     return $a; 
    } 
} 
return []; // id not found, handle your fallback 
+0

申し訳ありません、あなたは複数のアイテムを取得したいと考えていました。あなたが望む結果の例を示すことができますので、私はそのようにコード化することができます。すべてのアイテムを取得したいだけなら、 'return $ albix; – emotality

関連する問題