Laravel post 所有者关系
Laravel post owner relationship
我有 category_content
、contents
和 users
table,每个 contents
属于许多 category_content
和 category_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();
});
}
user
在contents
之内,所以用闭包访问,
$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');
我有 category_content
、contents
和 users
table,每个 contents
属于许多 category_content
和 category_content
属于许多 contents
,每个 contents
属于一个用户,一个用户在 contents
table
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();
});
}
user
在contents
之内,所以用闭包访问,
$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');