2016-06-08 54 views
1

我用下面的代碼:對象返回三個值而不是一個。 Laravel

public function verify($id,$sid) 
{ 
$sfees = sfee::where('student_id', $sid)->first(['mfee_id']);//mfee_id is the column I'm trying to recover 
foreach ($sfees as $sfee) { 

    echo $sfee; 

} 

的問題是,它返回3 1.當它應該只返回一個。 如果我在foreach之前回顯$ sfees,它將只返回一個值:{「mfee_id」:1}。 問題是什麼?誰能幫我?

回答

0

您正在問一個模型,您不需要嘗試迭代它,它是一個單一模型(對象)。 (first()可以返回空的,所以你應該檢查)

$sfees->mfee_id; 

如果你只是想該列的一個記錄中的值:

$mfee_id = sfee::where('student_id', $sid)->value('mfee_id'); 

Laravel 5.2 Docs - Query Builder - Retrieving Results - Retrieving A Single Row/Column From A Table

+0

它適用於1值。但也有多個值,如鏈接表中有多個具有不同mfee_id的student_id。在多值的情況下,它只返回一個值。 – Anon

+0

我認爲你應該用你實際上想要做的事情來更新你的問題:)因爲'first'的意思是1,並且你傳遞了你想要的字段數組,這是一個字段。 – lagbox

0

您應該使用return聲明從功能返回,而不是echo

public function verify($id,$sid) 
{ 
    $sfees = sfee::where('student_id', $sid)->first(['mfee_id']);//mfee_id is the column I'm trying to recover 

    return $some_variable; 
} 
0

你的問題是,你試圖通過單一模型進行迭代。這就是你itterate了屬性的原因,你會得到奇怪的結果,只認爲你需要的是這樣做:

public function verify($id,$sid) 
{ 
    $sfees = sfee::where('student_id', $sid)->first(['mfee_id']);//mfee_id 

    echo $sfees->mfee_id; 
} 

$sfees在這個例子中是一個單一的模型不是模型的集合,具有因你用過first爲拿到它,爲實現它。

相關問題