【问题标题】:Obtaining field from table using primary key使用主键从表中获取字段
【发布时间】:2017-05-10 04:09:35
【问题描述】:

使用 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 }} 恰好是被修改的用户记录的主键。我想返回该用户记录的电子邮件地址或名字/姓氏。我在这方面还很陌生,可以朝正确的方向推动!

谢谢!

【问题讨论】:

    标签: php laravel laravel-5 eloquent revisionable


    【解决方案1】:

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

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

    【讨论】:

    • 来自文档:“要接受答案:选择一个您认为是解决问题的最佳解决方案的答案。要将答案标记为已接受,请单击答案旁边的复选标记以切换它从灰色变为已填写。您可以随时更改接受的答案,或者干脆不接受答案。”
    【解决方案2】:

    从变量名revisionable_typerevisionable_id 我假设您正在使用多对多多态关系。基于此 您必须在 Revision 模型中定义与 User 的关系,如下所示:

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

    因此您可以使用与此用户相关的所有修订$revision-&gt;users 这将返回数组 如果你确定你只有一个与这个对象相关的记录,就像我认为的你的情况一样。你可以使用$revision-&gt;users-&gt;first()-&gt;email或用户名等。

    Laravel Docs

    【讨论】:

    • 感谢您的快速响应和文档链接以获取更多信息!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    相关资源
    最近更新 更多