Получение поля из таблицы с использованием первичного ключа

Использование Laravel и Revisionable Package для отслеживания изменений. На мой взгляд, я заполняю свой стол:

@foreach($revisions as $revision)
@if($revision->key == 'created_at' && !$revision->old_value)
<tr>
<td>{{ $revision->revisionable_type }}</td>
<td>{{ $revision->revisionable_id }}</td>
<td width="50">{{ $revision->userResponsible()->first_name }}</td>
<td Width="50"></td>
<td></td>
<td>{{ $revision->newValue() }}</td>
<td width="150">{{ $revision->created_at }}</td>
</tr>
@else
<tr>
<td>{{ $revision->revisionable_type }}</td>
<td>{{ $revision->revisionable_id }}</td>
<td width="50">{{ $revision->userResponsible()->first_name }}</td>
<td width="50">{{ $revision->fieldName() }}</td>
<td>{{ $revision->oldValue() }}</td>
<td>{{ $revision->newValue() }}</td>
<td width="150">{{ $revision->updated_at }}</td>
</tr>
@endif
@endforeach

Второй столбец {{$ revision-> revisionable_id}} является первичным ключом пользовательской записи, которая была изменена. Я хотел бы вернуть адрес электронной почты или имя_файла / фамилию записи этого пользователя. Я довольно новичок в этом и могу использовать толчок в правильном направлении!

Спасибо!

2

Решение

Вы можете получить доступ к модели, к которой относится данная ревизия, путем доступа к revisionable отношение этой ревизии. В вашем случае, чтобы отобразить свойство email соответствующей модели, вы можете сделать следующее:

<td>{{ $revision->revisionable->email }}</td>
1

Другие решения

из имен переменных revisionable_type & revisionable_id Я предполагаю, что вы используете много-много полиморфных отношений. на основании этого
Вы должны определить отношение в Revision Модель с User вот так:

public function users()
{
return $this->morphedByMany('App\User', 'taggable');
}

так что вы можете использовать все ревизии, связанные с этим пользователем $revision->users это вернет массив
и если вы уверены, что у вас есть только одна запись, связанная с этим объектом, как ваш случай, как я думаю. ты можешь использовать $revision->users->first()->email или имя пользователя и т.д ..

Laravel Docs

0

По вопросам рекламы [email protected]