Laravel post 所有者关系

Laravel post owner relationship

我有 category_contentcontentsusers table,每个 contents 属于许多 category_contentcategory_content属于许多 contents,每个 contents 属于一个用户,一个用户在 contents table

上有多个 post
class Contents extends Model
{
    ...

    public function categories()
    {
        return $this->belongsToMany(ContentCategories::class);
    }

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

class ContentCategories extends Model
{
    ...

    public function contents()
    {
        return $this->belongsToMany(Contents::class);
    }
}

class User extends Authenticatable
{
    ...

    public function content()
    {
        return $this->hasMany(Contents::class);
    }
}

通过下面的代码,我可以找到类别 ID 为 7

的类别内容
$nodejsContents = ContentCategories::find('7')->contents;

现在,问题来了,我如何在此查询中获得 post 所有者哪些内容属于哪个用户

我测试了这段代码,但出现错误:

$nodejsContents = ContentCategories::find('7')->contents->user;

错误:

"Undefined property: Illuminate\Database\Eloquent\Builder::$contents"

contents_categories 迁移:

public function up()
{
    Schema::create('contents_categories', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->string('lang',2)->default('fa');
        $table->integer('parent')->default(0);
        $table->timestamps();
    });
}

usercontents之内,所以用闭包访问,

$nodejsContents = ContentCategories::has('contents')->with(['contents' => function($query){
                                        $query->with('user')->get();
                                    }])->find('7');
ContentCategories::find('7')->contents

belongsToMany 内容会return 一个合集。因此,您可以循环遍历集合以获取 Contents

的相关用户

ContentCategories::find(7)->contents->with('user');