我有一个User表,需要允许用户有一个父用户.

the table would have the fields:

  • id
  • parent_id
  • email
  • password

我如何在Eloquent 的ORM中定义这种自引用关系?

推荐答案

I had some success like this, using your exact DB table.

User Model:

class User extends Eloquent {

    protected $table = 'users';
    public $timestamps = false;

    public function parent()
    {
        return $this->belongsTo('User', 'parent_id');
    }

    public function children()
    {
        return $this->hasMany('User', 'parent_id');
    }

}

and then I could use it in my code like this:

$user     = User::find($id);

$parent   = $user->parent()->first();
$children = $user->children()->get();

Give that a try and let me know how you get on!

Laravel相关问答推荐

如何在Laravel中从多行中获取合并数组?

如何在使用Docker容器部署Laravel 8、9、10时处理SIGTERM信号,特别是与调度程序和工作进程相关的问题?

从 Laravel 中的值开始主键

如何将用户对象绑定到中间件中的请求

Laravel:子文件夹中的 lang 文件

如何在 vue 模板中引用 laravel csrf 字段

语法错误或访问冲突:1115 未知字符集:utf8mb4

FileViewFinder.php 第 137 行中的 Laravel 5 InvalidArgumentException:未找到视图 [.admin]

Laravel 价格验证只接受正数而不是 0

Laravel 5.3 创建模型返回字段没有默认值

PHP 中的 Http 响应代码枚举

Laravel 从现有模型生成迁移

如何更改 Handlebars.js 的默认分隔符?

在 Laravel 中生成随机数

用于集合的 Laravel 5.5 API 资源

如何在 Laravel 5 中按键获取所有缓存项目的列表?

如何从 Laravel 中的资源中获取图像?

如何在 Laravel 5 中的每个相关输入字段旁边显示验证错误?

如何在 Laravel 5.2 中使用 OR 条件将多个参数传递给中间件

将参数传递给 Laravel 中的中间件