【问题标题】:Trying to get property of non-object foreach blade in laravel 5.7试图在 laravel 5.7 中获取非对象 foreach 刀片的属性
【发布时间】:2019-12-26 23:09:14
【问题描述】:

我正在尝试从 foreach 访问我的课程信息,但它显示此错误:尝试获取非对象的属性。

我尝试访问信息如下:$purchase->course->name 也像这样:
$ purchase[course][name] 但没有显示任何结果,我附上了我的模型、我的控制器和我的视图。

型号:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Purchase extends Model
{   
    protected $fillable = [
            'transaction_id',
            'user_id',
            'course_id',
            'status',
            'total'
    ];

    public function courses()
    {
        return $this->belongsTo(Course::class,'course_id');
    }
}

控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Purchase;

class PurchaseController extends Controller
{
    public function index()
    {  
        $purchases = Purchase::with('courses')->get();
        return view('purchases.index',compact('purchases'));
    }
}

查看:

@foreach($purchases as $purchase )
 {{$purchase->course->name}}
@endforeach

如果只显示像$purchase 这样的变量,所有数据都会出现,但是当尝试访问课程$purchase-&gt;course 时,它什么也不显示。 在控制器中它可以正常工作,但不能在刀片视图中工作。

【问题讨论】:

  • 将`{{$purchase->course->name}}`更改为{{$purchase-&gt;courses-&gt;name}}。您的关系名称是courses,但您使用的是course
  • 或者您可以将方法名称更改为单数形式,因为您正在处理多对一。 public function course() 然后在你的控制器中:$purchases = Purchase::with('course')-&gt;get();

标签: php laravel foreach controller laravel-blade


【解决方案1】:
{{ $purchase->course->name }}

应该是:

{{ $purchase->courses->name }}

您的函数名称是 course(),这意味着属性名称是 courses,而不是 course

【讨论】:

  • 天哪,谢谢,我没有看到,现在我觉得有点傻哈哈
  • 获得第二眼总是好的——有时回想起来最烦人的错误是最容易修复的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 2023-03-30
  • 2018-07-14
  • 1970-01-01
  • 2018-10-13
  • 2018-12-30
相关资源
最近更新 更多