【问题标题】:Object returning three value instead of one. Laravel对象返回三个值而不是一个。拉拉维尔
【发布时间】:2016-10-08 04:16:01
【问题描述】:

我使用了以下代码:

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}。 问题是什么?谁能帮帮我?

【问题讨论】:

    标签: php mysql laravel syntax-error


    【解决方案1】:

    您的问题是您尝试迭代单个模型。那是因为你迭代属性并且你得到奇怪的结果唯一认为你需要这样做:

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

    在此示例中,$sfees 是单个模型而不是模型集合,因为您已使用 first 获取它。

    【讨论】:

      【解决方案2】:

      您应该使用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;
      }
      

      【讨论】:

        【解决方案3】:

        您要求一个模型,您无需尝试迭代它,它是一个模型(对象)。 (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 个值。但是也有多个值,例如,链接表中有多个具有不同 mfee_id 的 student_id。如果有多个值,它也只返回一个值。
        • 我认为你应该用你实际想要做的事情来更新你的问题:) 因为first 表示 1 并且你正在传递你想要的字段数组,这是一个字段。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-12
        • 1970-01-01
        • 1970-01-01
        • 2015-08-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多