Laravel一对多关系:检索另一个表的ID

时间:2019-06-20 08:02:28

标签: php laravel eloquent

我想从用户表中获取帖子表中user_id字段的ID

我已经尝试使用Auth :: id();但它会检索当前经过身份验证的ID

所以我想要的是,当我创建新数据时,来自用户的ID将显示在帖子表的user_id字段中

这是我的帖子模型:

public function user()
{
    return $this->belongsTo(User::class);
}    

这是我的用户模型:

public function posts()
{
    return $this->hasMany(post::class);
}

这是我当前存储数据的方式:

$post = new post;
    // $post->parent_id = $request->input('id');
    $post->user_id = Auth::id(); 
    $post->type = $request->input('type');
    $post->slug = str_slug($request->input('title'));
    $post->title = $request->input('title');
    $post->body = $request->input('body');
    $post->excerpt = $request->input('excerpt');
    $post->image = $imageName;
    $post->tag = $request->input('tag');
    $post->metas = $request->input('metas');
    $post->ispublished = $request->input('ispublished');
    $post->published_at = $request->input('published_at');
    $post->save();

我该怎么做我想要的?

2 个答案:

答案 0 :(得分:0)

您的问题尚不清楚,但是您可以将关系用于此工作,例如:

$user->post()->create([
    $post->type = $request->input('type');
    $post->slug = str_slug($request->input('title'));
    $post->title = $request->input('title');
    $post->body = $request->input('body');
    $post->excerpt = $request->input('excerpt');
    $post->image = $imageName;
    $post->tag = $request->input('tag');
    $post->metas = $request->input('metas');
    $post->ispublished = $request->input('ispublished');
    $post->published_at = $request->input('published_at');
]);

此解决方案在性能上并不是很好,因为它使用了join。

答案 1 :(得分:0)

检查到控制器的路由,如果它具有中间件。要通过Auth中间件检索用户数据。

示例

Route::post('/', 'PostController@store')->middleware('auth:users');