所以我目前有3个模型Specie Type User。我希望能够获得与Specie模型相关的最后修改用户的名称

关系如下

Class Specie extends Model {
   public function type()
   {
        return $this->belongsTo('App\Type', 'type_id');
   }

   public function user()
   {
        return $this->belongsTo('App\User', 'user_id');
   }
}

Class Type extends Model {
   public function specie()
   {
        return $this->hasMany('App\Specie', 'type_id');
   }
}

Class User extends Model {
   public function specie()
   {
        return $this->hasMany('App\Specie', 'user_id');
   }
}


我已经试过了

Class Specie extends Model {
    public function lastModified()
    {
        return $this->belongsTo('App\User', 'last_modified_by');
    }
}


然后用下面的代码

$this->type->with(['specie.lastModified' => function ($query) use
        ($userId) {
            $query->where('user_id', $userId);
        }])->get();


不幸的是,这似乎不起作用

但是,通过使用此代码

$this->type->with(['specie' => function ($query) use ($userId) {
            $query->where('user_id', $userId);
        }])->get();


我能够得到这个:

"id": 1,
"type": "Halo",
"created_at": "2019-07-20 13:02:53",
"updated_at": "2019-07-20 13:02:53",
"specie": [
  {
    "id": 5,
    "user_id": 1,
    "type_id": 1,
    "note": "et",
    "created_by": 1,
    "last_modified_by": 1,
  }
]


但是,我要获取的是最后修改的人的姓名,这是User模型中的主键,而是Specie模型中的外键

这是我期望得到的:

"id": 1,
"type": "Halo",
"created_at": "2019-07-20 13:02:53",
"updated_at": "2019-07-20 13:02:53",
"specie": [
  {
    "id": 5,
    "user_id": 1,
    "type_id": 1,
    "note": "et",
    "created_by": 1,
    "last_modified_by": 1,
    "last_modified_name": 'gerrard'
  }
]

最佳答案

在这样的模型中

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class lastModified extends Model
{
    protected $table = 'lastModifieds';

}

10-05 19:59