所以我目前有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';
}