【发布时间】:2019-12-31 04:22:13
【问题描述】:
我想知道为什么我的 laravel 刀片文件中出现错误“尝试获取非对象”。
刀片文件中的代码
@foreach($calls as $call)
<tr>
@if($call->counter_id === null)
<td>{{ $call->department->dept_name }}</td>
<td>{{ $call->transaction->trans_name }}</td>
</tr>
@endforeach
调用模型
public function call()
{
return $this->hasMany('App\Call');
}
部门模型
public function department()
{
return $this->belongsTo('App\Department');
}
控制器
public function index()
{
$calls = Call::all();
return view('test', ['calls' => $calls]);
}
该代码似乎是正确的。我在我的模型中提供了关系。我只是想知道为什么会出现这种错误,因为我也在弄清楚为什么。
【问题讨论】:
-
您可以调试它,首先关闭 @endif ,就好像您说您的关系设置正确尝试
dd($call->department)并注释下面的所有其他代码(在 @foreach 循环内),如果你得到收集作为回报,那么你需要检查列名,否则你的关系不正确,现在我建议,总是先从控制器检查,然后再进入控制器中的刀片 dd($calls),是这是你的查询$calls = Calls::with(['department','transaction'])->get()? -
尝试
dd为您的对象它应该是空的 显示控制器中的 resquest 方法 -
@Vipertecpro 不,我的查询是 $calls = Call::all()。它适用于除此之外的其他文件
-
请显示来电的型号。很可能是 App/Calls.php。
-
请dd($calls);并检查 dept_name 是否存在于该对象中,如果不是,您必须在查询或数据库中进行一些更改。
标签: laravel laravel-blade laravel-5.8