我对与用户对象(数据列)的关系感到困扰
这是我的Temp模型:
class Temp extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
}
用户模型:
class User extends Model
{
public function temp()
{
return $this->hasMany('App\Temp');
}
}
控制器:
$data['mediaReport'] = Temp::where('type', 'media_report')->paginate(10);
查看:
@foreach ($mediaReport as $m)
<?php $wer = json_decode($m->data); ?>
<td><span class="bg-primary-700 text-highlight">{{ $wer->id }}</span></td>
<td align="center">{{ $wer->comment }}</td>
<td><span><a href="{{ route('profile', $wer->user->username) }}" class="bg-success-700 text-highlight">Reporter</a></span> <span><a href="#" class="bg-danger-700 text-highlight">{{-- {{ $m->id }} --}}Delete</a></span></td>
@endforeach
我收到错误“试图获取非对象的属性”,“$ wer-&gt; user-&gt; username”中的此错误可以帮助我吗?
答案 0 :(得分:1)
从数据列解码JSON时, $ wer-&gt;用户值为字符串,其中包含用户ID,&您试图访问该字符串的用户名属性时出现错误的原因。
为了使其正常工作,您需要先获取用户,例如:
<a href="{{ route('profile', User::findOrFail($wer->user)->username) }}">
这是最简单但不是最干净的解决方案。 视图应该只呈现数据,而不是解码JSON或从数据库加载数据 - 您应该在模型创建逻辑或控制器中的某处执行此操作。