正在尝试获取非对象Laravel 5.8的属性“dept_name”

正在尝试获取非对象Laravel 5.8的属性“dept_name”,laravel,laravel-blade,laravel-5.8,Laravel,Laravel Blade,Laravel 5.8,我想知道为什么我在尝试获取laravel刀片文件中的非对象时出错 我的刀片文件中的代码 @foreach($calls as $call) <tr> @if($call->counter_id === null) <td>{{ $call->department->dept_name }}</td> <td>{{ $call->transaction->trans_name }}&

我想知道为什么我在尝试获取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 department()
{
    return $this->belongsTo('App\Department');
}
控制器

public function index()
{
    $calls = Call::all();

    return view('test', ['calls' => $calls]);
}

该代码似乎是正确的。我在模型中提供了关系。我只想知道它为什么会出现这种错误,同时我也要找出原因。

您需要进行调试,看看到底是什么地方出了问题

试一试

看看从内部传来的是什么作为部门名称。 如果使用dd,您将看到关系标签中的数据。 如果你没有看到任何关系,如部门,那么你的模型设置是不好的。 否则 可能是数据库列中的名称不匹配或未定义属性
在模型类中。

您可以调试它,首先关闭@endif,就像您说您的关系设置正确一样尝试dd$call->department并在@foreach循环中注释下面的所有其他代码,如果您得到集合,则需要检查列名,否则您的关系不正确,现在我建议,始终先从控制器进行检查,然后再在控制器中转换为刀片dd$calls,这是您的查询$calls=calls::with['department','transaction']->get吗?尝试为您的对象添加dd,它应该为空,并在中显示我的resquest方法controller@Vipertecpro不,我的查询是$calls=Call::all。它适用于除此之外的其他文件。请显示调用的模型。很可能是App/Calls.php.Please dd$Calls;并检查对象中是否有部门名称,如果没有,则必须在查询或数据库中进行一些更改。在laravel中使用dd时,无需给出die或exit,dd将自动退出代码
in your controller make sure

$calls = Calls::with('department')->get();

return view('--your blade file--',compact('calls'));
}
var_dump( $call);;
die;
dd($call);
die;
in your controller make sure

$calls = Calls::with('department')->get();

return view('--your blade file--',compact('calls'));
}