2016-06-08 76 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为拿到它,为实现它。

相关问题