使用ORM关联关系,如何自己关联自己

今天碰到一个需求是需要自己关联自己,输出数据为树状,我们在定义关联关系的用get_calss方法

   /**
     * 定义关联关系
     * @return \think\model\relation\HasMany
     */
    public function user()
    {
        return $this->hasMany(get_class($this),‘area‘,‘area‘);
    }
{
    "code": 200,
    "message": "成功",
    "data": [
        {
            "area": "自营",
            "user": [
                {
                    "id": 2,
                    "usr": "毅拓科贸",
                    "area": "自营"
                },
                {
                    "id": 3,
                    "usr": "安博",
                    "area": "自营"
                },
                {
                    "id": 4,
                    "usr": "世纪扬天",
                    "area": "自营"
                },
                {
                    "id": 5,
                    "usr": "沧田",
                    "area": "自营"
                },
                {
                    "id": 6,
                    "usr": "佳阳电子",
                    "area": "自营"
                },
                {
                    "id": 7,
                    "usr": "博中天虹",
                    "area": "自营"
                },
                {
                    "id": 8,
                    "usr": "丹灵",
                    "area": "自营"
                },
                {
                    "id": 153,
                    "usr": "中美隆",
                    "area": "自营"
                },
                {
                    "id": 154,
                    "usr": "格力",
                    "area": "自营"
                },
                {
                    "id": 155,
                    "usr": "美承",
                    "area": "自营"
                }
            ]
        },
        {
            "area": "安阳",
            "user": [
                {
                    "id": 9,
                    "usr": "安阳A",
                    "area": "安阳"
                },
                {
                    "id": 27,
                    "usr": "安阳B",
                    "area": "安阳"
                },
                {
                    "id": 59,
                    "usr": "林州市",
                    "area": "安阳"
                },
                {
                    "id": 62,
                    "usr": "安阳县",
                    "area": "安阳"
                },
                {
                    "id": 82,
                    "usr": "滑 县",
                    "area": "安阳"
                },
                {
                    "id": 113,
                    "usr": "内黄县",
                    "area": "安阳"
                },
                {
                    "id": 119,
                    "usr": "汤阴县",
                    "area": "安阳"
                }
            ]
        },

这里的get_class($this):获取的是当前类名

get_called_calss和它不同,是调用该方法的类名(和self,static和区别都是在继承上).

时间: 2024-10-23 06:08:41

使用ORM关联关系,如何自己关联自己的相关文章

Hibernate四 关联关系之双向关联

双向关联 一 双向1--N关联 1.无连接表的双向1--N关联 N的一端需要使用@ManyToOne注解来修饰代表关联实体的属性,1的一端需要使用@OneToMany注解来修饰代表关联实体的属性. 双向关联应该由N的一端来控制关联关系,因此在使用@OneToMany注解时指定mappedBy属性.一旦为@OneToMany,@ManyToMany指定了该属性,则表明当前实体不能控制关联关系,一旦当前实体放弃控制关联关系后,hibernate就不允许使用@JoinColumn或@JoinTable

Hibernate三 关联关系之单向关联

一 分类Hibernate的关联关系可分为:单向关联和双向关联单向关联包括:1->1 1->N N->1 N->N 双向关联包括:1->1 1->N N->N二 单向N->1关联1.程序应该在N的一端的持久化类中增加一个属性,该属性引用1的一端的关联实体对于N->1关联,都需要在N的一端使用@ManyToOne修饰代表关联实体的属性,该注解可以指定以下属性:(1)cascade:指定Hibernate对关联实体采用怎样的级联策略,包括以下五种情况:Ca

使用sqlalchemy的ORM创建外键关联时报错

在学习使用sqlalchemy模块的时候踩了一个坑,分享一下. 埋下隐患 我先用下面的语句创建了一张学生信息表: > CREATE TABLE student ( -> id INT UNSIGNED AUTO_INCREMENT, -> name VARCHAR(20) NOT NULL, -> age TINYINT, -> PRIMARY KEY (id) -> ); 表里就3个字段:自增id(无符号的数字,自增id不会是负数,当然用无符号,感觉自己好专业),na

django ORM中的RelatedManager(关联管理器)

关联管理器应用在 一对多的表 或者 多对多的表 多对多表中的用法: 在多对多的表中 正向查询 #基于对象的查询 #正查 # author_obj = Author.objects.get(id=1) # print(author_obj) #<Author object: 1 吴晓波> # print(author_obj.book_set.all()) #出版过的所有的书 <QuerySet [<Book: 小王子>, <Book: 哈利波特>]> 在反向

ORM的相关操作

ORM的概念 ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中.ORM在业务逻辑层和数据库层之间充当了桥梁的作用.ORM的优势:ORM解决的主要问题是对象和关系的映射ORM提供了对数据库的映射,不用直接编写SQL代码,只需像操作对象一样从数据库操作数据.ORM的劣势:在一定程度上牺牲程序的执行效率. 在Django中格式使用ORM连接Mysql ''' 1. 手动创建数据库 2. 在settings.py里面配置一下数据库的连接信息(告诉Django连接哪

Hibernate之关联关系(一对多)

今日分享hibernate框架的简单关联关系 一:关联关系简介 1.1 什么是关联关系 关联指的是类之间的引用关系.如果类A与类B关联,那么被引用的类B将被定义为类A的属性. 例如: class B{ private String name; } public class A{ private B b = new B; public A(){} } hibernate:orm框架.以面向对象的思想操作数据库 实体类-->表 属性-->字段 1.2 关联关系分类 关联可以分为一对一.一对多/多对

ORM操作mysql数据库多表的增删改查

多表增加 # 一对一 #查询要被关联的属相对象 au_obj = models.AuthorDetail.objects.get(id=4) models.Author.objects.create( name='海狗', age=59, #方式一:直接通过数据库的字段名au_id增加,一对一时,数据必须是没有关联过的,否则会报错 au_id=4, #方式二:通过属性models类的属性添加,首先要查出要关联的对象,然后通过属性关联,一对一数据必须未关联 au=au_obj,) #一对多 pub

UML类图及依赖,泛化,关联,聚合,组合,实现

UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务.一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将类的职责分解成为类的属性和操作(即方法). 3) 类的属性即类的数据职责,类的操作即类的行为职责 一.依赖关系(Dependence) 依

设计模式之UML(一)类图以及类间关系(泛化 、实现、依赖、关联、聚合、组合)

类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据.接下来我们就来谈谈类图的组成,在下一篇中我们将讨论一下类图之间的关系. 一.类图的组成 1. 普通类 上图就是一个UML的普通类图,从上图我们看出,一个UML通常由三部分组成. 第一部分是类名:每个类都必须有一个名字,类名是一个字符串. 第二部分是类的属性(Attributes):属性是指类的性质,即类的成员变量.一个类可以有任意多个属性,也可以没有属