使用主键从表中获取字段

时间:2016-12-25 04:12:30

标签: php laravel laravel-5 eloquent revisionable

使用Laravel和可修订程序包跟踪更改。在我看来,我填充了我的桌子:

@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-&gt; revisionable_id}}恰好是被修改的用户记录的主键。我想返回该用户记录的电子邮件地址或first_name / last_name。我在这方面相当新,可以使用正确的方向推动!

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以通过访问该修订的可修订关系来访问给定修订所涉及的模型。在您的情况下,为了显示相关模型的电子邮件属性,您可以执行以下操作:

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

答案 1 :(得分:0)

来自变量名称revisionable_type&amp; revisionable_id我假设你使用了多对多的多态关系。基于此 你要在Revision模型中定义User的关系,如下所示:

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

因此您可以使用与此用户$revision->users相关的所有修订版本,这将返回数组 如果您确定您只有一个与此对象相关的记录,就像我想的那样。您可以使用$revision->users->first()->email或用户名等。

Laravel Docs