我有以下数据库结构:
用户
交
所以我在模型中创建了关系函数:
class User extends Model {
public function post()
{
return $this->hasMany(Post::class);
}
}
如果我执行$user->post
将返回完整的帖子对象。
如何才能获得帖子ID?
答案 0 :(得分:1)
你可以这样做
$user = User::with(['post' => function ($q) {
$q->select('id');
}])->where('id', $id)->first();
或者您可以设置选择关系
public function post()
{
return $this->hasMany(Post::class)->select(['id','user_id']);
}
答案 1 :(得分:1)
至少需要user_id才能使其正常工作。
public function post() {
return $this->hasMany(Post::class)->select(['id', 'user_id']);
}
如果您不想针对特定情况展示它;尝试:
$user->post->each(function($post) {
$post->setVisible(['id']);
});
这样你也可以摆脱user_id。
答案 2 :(得分:0)
为了获得一个id列表而不是eloquent模型,我将使用查询构建器。
DB::table('posts')
->select('posts.id') // fetch just post ID
->join('users', 'posts.user_id', '=', 'users.id')
->where('users.id', ...) // if you want to get posts only for particular user
->get()
->pluck('id'); // results in array of ids instead of array of objects with id property
为了使其正常工作,您需要在同一个文件中添加use DB;
。