3 回答
TA贡献1936条经验 获得超6个赞
您可以在 Page 模型中创建父子关系。
public function parent()
{
return $this->belongsTo('Page', 'parent_id');
}
public function children()
{
return $this->hasMany('Page', 'parent_id');
}
现在,您可以检查 Page 是否有孩子,并像这样提取父 ID 为 null 的记录:
$pages = Page::where('parent_id', null)->doesntHave('children')->get();
这将为您提供父 ID 为 null 且没有子项的记录。我希望你明白。
TA贡献1825条经验 获得超6个赞
嗯...我认为不可能将其分解为一行,因为我就像您必须循环 parent_id 列检查当前 id 是否在 parent_id 列中:
但不用担心:不同的方法会更容易:两个单独的表,因此不同的关系:
Pages model: has one parent
Parents model: belongs to a page
有了上面的关系,你可以很容易地使用 eloquent 来获得没有父级的东西,只需检查哪里没有给定的关系:
打破这个:
Pages model:
public function parents () {
return $this->hasOne(Parent::class, 'page_id');
}
对父母模型:
Parents model:
protected $fillable = ['page_id'];
public function pages () {
return $this->belongsTo(Page::class, 'page_id');
}
- 3 回答
- 0 关注
- 169 浏览
添加回答
举报