2017-09-04 64 views
0

我正在嘗試學習laravel並做了一些查詢。在此查詢中,我試圖檢查記錄的值是否與用戶獲得了相同的課程Laravel 5.4檢查數據庫中的給定數組

$check1 = Record::where([['year','=',$show->year],['course','=',$show->course]])->get(); 

既然它給了我一個數組的集合,並希望檢查已經給出的每一個結果,我已經使用了一個foreach。

foreach($check1 as $record){ 
    $check2 = Fbuser::where([['first_name','=',$record->firstname],['last_name','=',$record->lastname]])->get(); 
     if ($check2 === null) { 
      dd($record->firstname); 
     }else { 
      //do something 
     }} 

在上面的代碼中,我試圖檢查是否從$ CHECK1結果上Fbuser表存在。現在,問題是它只會檢查第一個值,而不是其他值。我怎樣才能使每個結果通過$ check2查詢?我認爲每個人都會這樣做。打算列出所有不在Fbuser表中的名稱。試圖尋找解決方案,但似乎無法找到一個。

+0

我看你不烏爾的foreach內返回任何東西,是什麼原因在foreach後面? – Sletheren

+0

@Sletheren我試圖檢查$ check1的每個結果。我在想每個人都會有所幫助。 – user1540

+0

檢查下面的答案..你可以使用過濾器做到這一點,過濾器將根據你想要的結果過濾結果 – Sletheren

回答

0

您可以使用Laravel的過濾器,這將只返回具有相同FIRST_NAME和LAST_NAME用戶的記錄:

$filtered_result = $check1->filter(function ($value, $key) { 
    return Fbuser::where([['first_name','=',$value->firstname],['last_name','=',$value->lastname]]; 
}); 
+0

謝謝。我已經嘗試瞭解決方案,但它似乎只是返回登錄用戶的詳細信息。奇怪的。可能在我進行查詢的路上。 – user1540

+0

它必須返回與FBuser first_name和last_name匹配的記錄,通常是 – Sletheren

+0

是的,但登錄用戶甚至不在FBuser表上。謝謝你的解決方案,我學到了新東西:) – user1540

相關問題