2017-09-02 61 views
0

還是關於laravel 5.4很困惑,因爲我是新來這檢查數據,我想從記錄表誰得到了相同的當然獲取數據的行與用戶Laravel 5.4 - 從另一個表

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

它成功運行,並能夠獲得人員名單。現在,我接下來要做的是檢查這些人員列表($ check1的結果)是否存在於名爲Fbuser的另一個表上。試着這樣做,

$check2 = Fbuser::where([['first_name','=',$check1->firstname],['last_name','=',$check1->lastname]]); 
    if ($check2 === null) { 
     return 'recommend'; 
    } else { 
     return 'exit'; 
    } 

但它給了我一個錯誤

(1/1)異常 屬性[名字]不會對這種集合實例存在。

有沒有什麼辦法可以解決這個問題? 在此先感謝。

+0

什麼是表Fbuser字段名稱? –

回答

0

check1包含的記錄集合不是單一的Record。要獲得單個的Record,您可以使用foreach。試試這個:

foreach($check1 as $record){ 
    $check2 = Fbuser::where([['first_name','=',$record->firstname],['last_name','=',$record->lastname]]); 
    if ($check2 === null) { 
     return 'recommend'; 
    } else { 
     return 'exit'; 
    } 
} 

你也應該得到$check2的結果。 where()重新查詢查詢生成器對象。您應該在末尾使用get()first()以獲取此查詢的結果。

$check2 = Fbuser::where([['first_name','=',$check1->firstname],['last_name','=',$check1->lastname]])->get() 
+0

哦對。沒想過。謝謝先生。我不知道我是否得到了正確的結果,但是有什麼辦法可以獲得人員名單,只是爲了檢查它是否是正確的列表。 – user1540

+0

啊我試過dd(),假設給我2個結果,但它只給我一個。認爲我的查詢有問題,但感謝先生,現在正在工作。 – user1540

+0

@ user1540你也應該修復你對'check2'的查詢。我更新了我的答案。 –

0

當你使用get()時,你會得到一個集合。你可以只得到一個對象通過它的指數,像

{{ $collection[0]->name }} 

修改此:

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

$check2 = Fbuser::where([['first_name','=',$check1[0]->firstname], ['last_name','=',$check1[0]->lastname]]); 
if ($check2 === null) { 
    return 'recommend'; 
} else { 
    return 'exit'; 
} 

希望它能幫助。