数据库列类型对象的关系

时间:2015-12-15 09:51:48

标签: php laravel laravel-5 eloquent laravel-5.1

我有像这样的对象记录的奇怪列: enter image description here

我对与用户对象(数据列)的关系感到困扰

这是我的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”中的此错误可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

数据列解码JSON时, $ wer-&gt;用户值为字符串,其中包含用户ID,&您试图访问该字符串的用户名属性时出现错误的原因。

为了使其正常工作,您需要先获取用户,例如:

<a href="{{ route('profile', User::findOrFail($wer->user)->username) }}">

这是最简单但不是最干净的解决方案。 视图应该只呈现数据,而不是解码JSON或从数据库加载数据 - 您应该在模型创建逻辑或控制器中的某处执行此操作。