【发布时间】:2020-05-31 02:13:50
【问题描述】:
我已经在我的 User 和 Post 模型之间建立了一种雄辩的关系,并且在迁移中,唯一指向 Post 作者的是他的 ID。 我正在构建一个 VueJS Spa 前端,我想知道如何获取所有帖子,包括但仅限于作者 ID 和姓名+姓氏。
我听说过数据库查询生成器,但我想远离它。
目前,我正在使用$posts = Post::all(); 获取所有内容,这是回复:
{
"id": 3,
"author": 1,
"subject": "Post subject",
"content": "The post content!!!!",
"created_at": "2020-05-31T02:08:53.000000Z",
"updated_at": "2020-05-31T02:08:53.000000Z"
}
如您所见,“作者”字段指向用户 ID。由于安全原因和不必要的原因,我不想获取整个用户信息。
后模型关系:
public function user() {
return $this->belongsTo('App\User')->select(array('id','name'));
}
用户模型关系:
public function posts() {
return $this->hasMany('App\Post');
}
我也试过:
Post::with('user:id,name,lastName')->get()
但用户返回 null。
【问题讨论】:
-
由于外键是
author而不是 eloquent 期望的user_id,因此您应该将自定义键名称作为第二个参数传递给 belongsTo 方法。 laravel.com/docs/7.x/eloquent-relationships#one-to-many-inverse