试图获取非对象Laravel 5.8的属性'dept_name'

时间:2019-08-27 02:28:48

标签: 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 }}</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]);
}

该代码看似正确。我在模型中提供关系。我只是想知道为什么会出现这种错误,同时我还要弄清楚为什么。

2 个答案:

答案 0 :(得分:0)

您需要进行调试以查看到底出了什么问题。

尝试

var_dump( $call);;
die;

dd($call);
die;

以dept_name的名称查看来自内部的内容。 如果您使用 dd ,则会在关系标签中看到数据。 如果您没有看到诸如department之类的任何关系,则您的模型设置不正确。 除此以外 可能是数据库列名称不匹配或属性未定义 在模型课中。

答案 1 :(得分:0)

in your controller make sure

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

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