首页 > 解决方案 > Laravel 获取具有关系的用户帖子

问题描述

我有两个表user_blogsusers这种关系结构

用户博客:

class UserBlogs extends Model
{
    protected $fillable = ['user_id', 'blog_content'];

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

    ...
}

用户:

class User extends Authenticatable
{
    ...

    public function blogs()
    {
        return $this->hasMany(UserBlogs::class);
    }
}

在控制器中,我可以使用以下代码获取用户博客:

$userBlogs = User::find($id)->blogs;

我可以得到输出结果,但为什么这段代码不起作用,我得到错误:

$userBlogs = auth()->user()->blogs();

或者

$userBlogs = auth()->user()->blogs;

移民:

public function up()
{
    Schema::create('user_blogs', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        $table->string('blog_title');
        $table->longText('blog_content');
        $table->timestamps();
    });
}

提前致谢

标签: phplaravel

解决方案


我对用户及其帖子也有相同的结构。以下代码对我有用:

$results = Post::with(['user'])->where('user_id',$user_id);
$posts = $results->get();

Post.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model {

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

}

推荐阅读