【发布时间】: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->course 时,它什么也不显示。
在控制器中它可以正常工作,但不能在刀片视图中工作。
【问题讨论】:
-
将`{{$purchase->course->name}}`更改为
{{$purchase->courses->name}}。您的关系名称是courses,但您使用的是course。 -
或者您可以将方法名称更改为单数形式,因为您正在处理多对一。
public function course()然后在你的控制器中:$purchases = Purchase::with('course')->get();
标签: php laravel foreach controller laravel-blade