如何在Laravel中建立父母/子女关系?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Laravel中建立父母/子女关系?相关的知识,希望对你有一定的参考价值。
我在laravel 6.0.4中有此模型:
class CategoryModel extends Model
public function parent()
return $this->belongsTo(CategoryModel::class, 'parent_id');
public function children()
return $this->hasMany(CategoryModel::class, 'parent_id');
和控制器
class CategoryController extends Controller
public function index()
CategoryModel::with('children')->get(); // this is working
CategoryModel::with('parent')->get(); // this is not working
这里是架构
Schema::create('category', function (Blueprint $table)
$table->bigIncrements('id');
$table->unsignedBigInteger('parent_id')->nullable();
$table->string('name');
$table->index(['parent_id']);
$table
->foreign('parent_id')
->references('id')
->on('category')
->onDelete('set null')
->onUpdate('set null');
);
我可以得到孩子,但对于父母,它为所有记录返回一个空数组。
答案
尝试一下:
public function parent()
return $this->hasOne(CategoryModel::class, 'id', 'parent_id');
public function children()
return $this->hasMany(CategoryModel::class, 'parent_id', 'id');
另一答案
您可以使用下面的代码与自类建立关系:
public function parent()
return $this->belongsTo('App\CategoryModel','parent_id')->where('parent_id',0)->with('parent') ;
public function children()
return $this->hasMany('App\CategoryModel','parent_id')->with('children');
以上是关于如何在Laravel中建立父母/子女关系?的主要内容,如果未能解决你的问题,请参考以下文章