2015-12-15 6 views
0

У меня есть странный столбец с записями объектов, как это: 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-> user-> имя пользователя" Кто-нибудь может мне помочь ?

ответ

1

Когда вы декодировать JSON из данных столбца, значение $ wer-> пользователя является строка, содержащая идентификатор пользователя, поэтому вы получаете сообщение об ошибке при попытке получить доступ к имени пользователя свойства эта строка.

Для того, чтобы работать, вы должны первым принести пользователю, например .:

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

That't самый простой, но не самый чистый раствор. Представление должно просто отображать данные, а не декодировать JSON или загружать данные из БД - вы должны сделать это где-нибудь в логике или контроллере создания модели.

+0

Спасибо, что работает! Я не знаю, как это сделать в модели – Reint

Смежные вопросы