首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

属于父模型的三个模型的Laravel 8关系

是多态多对多关系。

在Laravel 8中,可以使用多态多对多关系来定义属于父模型的三个模型之间的关系。多态多对多关系允许一个模型与多个其他模型建立多对多关系,同时还可以通过一个中间表来管理这些关系。

具体实现步骤如下:

  1. 首先,在父模型中定义多态关联。在Laravel中,可以使用morphToMany方法来定义多态多对多关联。例如,假设父模型为ParentModel,可以在该模型中定义如下关联方法:
代码语言:txt
复制
public function children()
{
    return $this->morphToMany(ChildModel::class, 'relation', 'relation_table');
}

其中,ChildModel::class表示子模型的类名,relation表示关联的名称,relation_table表示关联的中间表名称。

  1. 接下来,在子模型中定义多态关联。在子模型中,可以使用morphedByMany方法来定义多态多对多关联的反向关联。例如,假设子模型为ChildModel,可以在该模型中定义如下关联方法:
代码语言:txt
复制
public function parents()
{
    return $this->morphedByMany(ParentModel::class, 'relation', 'relation_table');
}

其中,ParentModel::class表示父模型的类名,relation表示关联的名称,relation_table表示关联的中间表名称,与父模型中定义的中间表名称保持一致。

  1. 最后,在中间表中定义关联字段。在中间表中,需要定义relation_idrelation_type字段来存储关联的模型信息。可以使用Laravel的迁移工具来创建中间表,例如:
代码语言:txt
复制
Schema::create('relation_table', function (Blueprint $table) {
    $table->unsignedBigInteger('parent_model_id');
    $table->unsignedBigInteger('child_model_id');
    $table->string('relation_type');
    $table->timestamps();

    $table->foreign('parent_model_id')->references('id')->on('parent_models')->onDelete('cascade');
    $table->foreign('child_model_id')->references('id')->on('child_models')->onDelete('cascade');
});

其中,parent_model_idchild_model_id字段分别表示父模型和子模型的外键,relation_type字段表示关联的模型类型。

通过以上步骤,就可以在Laravel 8中定义属于父模型的三个模型之间的多态多对多关系。在实际应用中,可以根据具体需求使用这些关联来进行数据查询和操作。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 详解Laravel设置多态关系模型别名方式

    作为 Laravel 重度使用者肯定都对多态关系不默生,以官方文档为例,文章有标签,视频有标签,那么文章和视频这些模型与标签模型关系就是 多态多对多(Many To Many (Polymorphic...)) 如果我们给 ID 为 1 文章打上两个标签,数据库标签关系存储结果就是这样子: select * from taggables; +--------+-------------+---...》 我们目标是使用表名来做为关系类别名,那么在模型中如何获取表名呢,直接使用模型 getTable 即可,那么整个 trait 实现如下: app/Traits/UseTableNameAsMorphClass.php...UseTableNameAsMorphClass { public function getMorphClass() { return $this- getTable(); } } 然后在我们需要用到关系类型模型中引入它即可...总结 以上所述是小编给大家介绍Laravel设置多态关系模型别名方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家。在此也非常感谢大家对ZaLou.Cn网站支持!

    2K21

    Laravel 模型事件应用

    Laravel模型事件中处理起来很方便:https://laravel-china.org/docs/laravel/5.5/eloquent#events Laravel 模型事件有两种方式,...设置dispatchesEvents属性映射事件类 使用观察器来注册事件,这里介绍第二种 新建模型 php artisan make:model Log <?...) LogBaseServer 新建一个观察器继承基类LogBaseServer(User模型,方法名字要对应文档中事件) LogBaseServer 到新建服务提供者...ObserverLogServiceProvider中运行 ObserverLogServiceProvider 为需要模型注册事件(我这挺多,之后大概长这样) 模型注册事件...然后我们触发一些事件(增删改,表数据就有了) 事件 多对多关联插入不会出触发模型(比如attach方法) 这时候就需要自己新建事件类来模拟(这里拿分配权限给角色粗略说一下) 在EventServiceProvider

    18910

    关系模型相关术语

    基本术语 关系:整个二维表 关系名:表格名称 元组:行数据(记录) 属性:列数据(字段/分量) 属性名:列名称(字段名) 主键:唯一确定元组属性组(关键字) 域:属性取值范围 关系模式:关系描述...连接依赖:为提高规范化程度,都是通过把低一级关系模式分解为若干个高一级关系模式来实现,在此过程中,应该保证分解后产生关系模式与原来模式等价。...二、关系模式规范化 满足第一范式条件关系模式(1NF):关系模式 R每一个属性都是原子域,元组每一个分量都是不可分割数据项。...满足第三范式条件关系模式(3NF):关系模式 R∈2NF ,每一个非主属性不传递依赖于码,消除非主属性对码传递函数依赖(对非主属性函数依赖)。...(限制关系模式属性之间不允许有非平凡且非函数依赖多值依赖) 满足第五范式条件关系模式(5NF):关系模式 R∈4NF,消除属于4NF关系模式中存在连接依赖。

    1K10

    ER模型关系模型转换规则

    E-R模型关系模型转换规则: 一、两元联系转换规则 (1)实体类型转换  将每个实体类型转换成一个关系模式,实体属性即为关系属性,实体标识符即为关系键。...(2)联系类型转换 a实体间联系是1:1可以在两个实体类型转换成两个关系模式中任意一个关系模式属性中加入另一个关系模式键和联系类型属性。...b实体间联系是1:N则在N端实体类型转换成关系模式中加入1端实体类型转换成关系模式键和联系类型属性。...二、三元联系转换规则 (1)1:1:1可以在三个实体类型转换成三个关系模式中任意一个关系模式属性中加入另两个关系模式键(作为外键)和联系类型属性 (2)1:1:N在N端实体类型转换成关系模式中加入两个...1端实体类型键(作为外键)和联系类型属性 (3)1:M:N将联系类型也转换成关系模式,其属性为M端和N端实体类型键(作为外键)加上联系类型属性,而键为M端和N端实体键组合 (4)M:N:P将联系类型也转换成关系模式

    2K60

    8模型训练

    根据问题特点选择适当估计器estimater模型: 分类(SVC,KNN,LR,NaiveBayes,...) 回归(Lasso,ElasticNet,SVR,...)...一,分类模型训练 ? ? ? ? ? ? ? ? ? 二,回归模型训练 ? ? ? ? ? ? ? ?...三,聚类模型训练 KMeans算法基本思想如下: 随机选择K个点作为初始质心 While 簇发生变化或小于最大迭代次数: 将每个点指派到最近质心,形成K个簇 重新计算每个簇质心 ?...四,降维模型训练 PCA主成分分析(Principal Components Analysis)是最常使用降维算法,其基本思想如下: 将原先n个特征用数目更少m个特征取代,新特征是旧特征线性组合...输出样本向量被横向连接成更长向量。 可以结合FeatureUnion 和 Pipeline 来创造出更加复杂模型。 ?

    66131

    一种 Laravel 中简单设置多态关系模型别名方式

    作为 Laravel 重度使用者肯定都对多态关系不陌生,以官方文档为例,文章有标签,视频有标签,那么文章和视频这些模型与标签模型关系就是多态多对多(Many To Many (Polymorphic...))[1] 如果我们给 ID 为 1 文章打上两个标签,数据库标签关系存储结果就是这样子: > select * from taggables; +--------+-------------+...实现目标 我们有两个选择去实现它: 1.创建一个模型基类覆盖这个方法,所有的模型都来集成它即可;2.创建一个 trait,在需要模型中引入它。...》[2] 我们目标是使用表名来做为关系类别名,那么在模型中如何获取表名呢,直接使用模型 getTable 即可,那么整个 trait 实现如下: app/Traits/UseTableNameAsMorphClass.php...UseTableNameAsMorphClass { public function getMorphClass() { return $this->getTable(); } } 然后在我们需要用到关系类型模型中引入它即可

    2.7K10

    数据模型三个要素

    数据模型是数据库中用来对现实世界进行抽象工具,是数据库中用于提供信息表示和操作手段形式架构。一般地讲,数据模型是严格定义概念集合。这些概念精确描述了系统静态特性,动态特性和完整性约束条件。...因此数据模型通常由数据结构,数据操作和完整性约束三部分组成 (1)数据结构 是研究对象类型集合,是对系统静态特性描述。...完整性规则是给定数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型数据库状态及状态变化,以保证数据正确、有效相容。解析数据模型是数据库系统中重要概念之一。...要通过学习真正掌握数据模型概念和作用。数据模型是数据库系统基础。任何一个DBMS都以某一个数据模型为基础,或者说支持某一个数据模型。数据库系统中,模型有不同层次。...根据模型应用不同目的,可以将模型分成两类或者说两个层次:一类是概念模型,是按用户观点来对数据和信息建模,用于信息世界建模,强调语义表达能力,概念简单清晰,另一类是数据模型,是按照计算机系统观点对数据进行建模

    1.3K20

    E-R图向关系模型转换_简述ER模型

    1.实例1:将教学管理ER图转换为关系模式 (1)把三个实体类型转换成三个模式:    ①系(系编号,系名,电话)    ②教师(教工号,姓名,性别,职称)    ③课程(课程号,课程名...①系(系编号,系名,电话,主管人教工号)    ②教师(教工号,姓名,性别,职称,系编号) ③课程(课程号,课程名,学分,系编号) (3)第三步:对于M:N联系“任教”,则生成一个新关系模式...:    ①任教(教工号,课程号,教材) (4)这样,转换成四个关系模式如下:    ①系(系编号,系名,电话,主管人教工号)    ②教师(教工号,姓名,性别,职称,系编号)    ③课程...,性别,名次,上一名次编号) (2)职工之间存在上下级联系,即1:N联系    ①职工(工号,姓名,年龄,性别,经理工号) (3)工厂零件之间存在着组合关系(M:N联系)    ①零件(零件号,...零件名,规格)    ②组成(零件号,子零件号,数量) 3.实例3:三元联系ER图结构转换为关系模式    ①仓库(仓库号,仓库名,地址)    ②商店(商店号,商店名)

    1.6K20

    数据库模型设计——关系实现

    在实体关系模型中,我们知道有三种关系:一对一、一对多、多对多。...这只是概念上关系,但是在真实关系数据库中,我们只有外键,并没有这三种关系,那么我们就来说一说在关系数据库管理系统中,怎么实现这三种关系。 一对多 这里先讲解一对多,因为这个关系最简单。...一对多关系之所以说简单,是因为RDBMS外键其实就是表示一对多关系。对于一对多关系,我们只需要在“多”这个表中建立“一”外键关联即可,而“一”这边表不需要做任何修改。...比如说学生和课程关系就是多对多关系。一个学生会学习多门课程,一门课程会有多个学生来选修。 在RDBMS中,必须使用中间表来表示多对多关系。...一对一关系在数据库设计中,是使用最少关系,因为一般来说,如果两个实体是一对多关系,那么我们也可以把这两个实体合并成一个实体。但是在设计中,我们仍然会遇到两个完全不同实体,之间存在一对一关系

    71710

    【说站】laravel模型$casts属性转换

    按照以往操作,在create时候,先手动对特定字段进行json_encode,然后再create; 而update时候,先手动json_decode,修改完毕后再json_encode,然后再...update; 想想都觉得麻烦,虽然可以使用laravel模型事件,在对应creating或updating事件中去处理,但这也太大材小用了。...实际上模型中有casts属性可以帮我们完成这个功能。...fillable,主键字段名(默认id)primaryKey,主键字段类型(默认int)keyType,主键是否自增(默认是)incrementing,等等,这里主要说是属性转换casts,在模型中设置一下即可...可参考:laravel模型事件-update触发updating和updated问题 先使用first或者find获取模型后再操作即可,当然,updateOrCreate也可以。。

    1.7K10
    领券