对象返回三个值而不是一个。 Laravel

时间:2016-06-08 04:29:25

标签: php mysql laravel syntax-error

我使用了以下代码:

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;

 }

问题是它返回三个1.虽然它应该只返回一个。 如果我在foreach之前回显$ sfees,它只返回一个值:{" mfee_id":1}。 问题是什么?任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

你要求一个模型,你不需要尝试迭代它,它是一个模型(对象)。 (first()可以返回null,所以你应该检查)

$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

答案 1 :(得分: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;
}

答案 2 :(得分:0)

你的问题是你试图在一个模型上进行迭代。这是因为你对属性进行了迭代而你得到了奇怪的结果,唯一认为你需要的是这样做:

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

    echo $sfees->mfee_id;
 }
此示例中的

$sfees是单个模型,而不是模型集合,因为您已使用first来获取它。