00:00
课来学习一下模型关联,主要掌握的内容有一对一关联,一对多关联,还有就是在使用模型关联的时候,属性使用的方式和方法有什么区别。看一下手册,手册是在嗯,Aloquent OM这里面模型关联,然手册内容比较多,我们常用的就是一些基本的关联。当然,如果需要其他的一些观点的时候,我们可以再回过头来去看这个手册。首先来看一下简介啊。我们的数据库就是表之间通常会有一个相互之间的关系啊,也就是我们之前会称为这个主表啊,从表或者关联表。比如一个啊博客文章可能有许多评论,或者一个订单,他会有一个下单的一个用户。Aloquent让这些关联和管理变得简单,并且支持多种关联。简单的说,就是说数据库的表与表之间存在相互的关联。而我们的aloquent这种模型。又和对应的一个表去啊。
01:03
映射。这样的话。反过来说,就是我们模型和模型之间也会存在这样的一个关联关系。那如何定义关联呢?安利的关联在。Loquent模型类中以方法的形式呈现。就是如同这个模型的本身。关联也可以作为强大的查询构造器使用,提供了强大的链式调用和查询功能。这个例子是拿这个文章的例子做演示啊。我们现有的表里面有。用户和博客,我们可以拿这个等会做练习和使用。在学习之前,先来学习如何定义每种关联关系。有点要注意啊,你要定义的关系名称不能和属性的名称啊进行冲突。就是你。我们的关联关系是用什么来定义的呢?是用方法来定义的,但是你定义的这个方法的名字不要和你这个表里面啊,比如user表里面的这个字段,字段名字冲突啊,你要冲突的话,当我们使用啊这个一个模型对象,比如说优色的一个模型对象去调它的这个啊phone啊属性或者方法的时候,它就不知道解析哪一个,这里一定要注意,就是我们表的字段不要和模型这个关联的这个方法名字重复。
02:24
首先看一看,一对一。一对一是最基本的关联关系,比如我们一个用户可能有一个呃手机号对吧,也就是我们如果放在数数据库层面,就是说我们用户表还有一个是手机号表,然后一个用户可以和一个手机号进行对应啊,这种关联也就是一对一,也是一个用户只有一个手机号。要定义这种啊,一对一的一个关系,就是在模型里面啊,用户的这个模型里面定义定义一个。啊phone,然后使用这个has one,也就是这个用户有一个手机号参数就是我们的啊这个关联表,也就是关联的那个模型的这个模类的一个名字。
03:06
比如他这里是关联的手机,所以是手机的这个类的一个名字。嗯,它默认啊,默认会使用这个ID和自己的一个啊。外键啊。就是做关联,也就是我们如果就是什么参数都不给的话。他会用什么自算进行关联呢?会用啊,我们用户表里面的这个ID啊,主表的ID和从表的就是我们关联表的什么呢?User侧杠ID也就是这个表的啊,User侧表的加上杠ID,这是默认的一个约束。当然,如果我们的关联的关系不是这么规则的话,可以指定啊,我们要关联的键。通过第二个参数和第三个参数指定要关联的键啊,第二个参数就是外键嘛,就是关联表,就从表的那个键,比如我们的分表里面的UC-ID,而第三个参数就是主表,我们本表的一个键就是user侧表里面的啊,比如说是ID啊,如果你不是这两个键的话,可以通过第二个参数和第三个参数去自定义。
04:12
好,反向关联的话呢,就是啊,既然一个用户他有啊一个手机号,那么我们如果是在这个手机号这个表里面去进行理解的话,就是说这个手机号它会属于一个用户,对吧,所以在这个。啊,手机表里面我们去进行反向关联的时候。就可以去定义,就说这个手机号,它是属于哪个用户。同样的也是可以去指定啊关联的键,那它的这个关联的键。是怎么来指定的呢?嗯,这个我们跳过直接看这个第三个第三个参数。这样的时候我们要履行什么,履清这个主表和从表,我们的用户表是不是主表,而我们当前这个复印表是不是从表是吧?复印表属于谁属于这个用户对吧?外键是谁作为外键是我们符表里面的优色杠ID作为外键,所以这里还是优色杠ID清楚吧。
05:06
那第三个参数是RK啊,也就是主键,我们这个主表的这个键,主表是谁?主表是userr,所以这里是user里面的这个ID键,能这么去理解,按照主从的一个关系去理解就可以了啊,第二个参数啊,不管是我们啊。在这个反向定义关联,还是在这个主表面去定义关联,第二个参数都是这个啊,从表的一个关联的一个外键啊,而第三个参数呢,都是我们主表的一个组件。啊,这么去记这两个参数就比较好记。好。这个我们就不演示了,一对多的话,我们可以拿。啊,这个我们的用户和我们的博客进行演示。啊,一对多呢,就是说这个单个模型拥有任意数量的其他关联的模型,比如我们的用户,他发布了很多博客,对吧,这个用户就有很多博客啊,比如一篇博客有很多条评论。
06:00
啊,也是在这个模型里面去定义啊。我们有一条的时候呢,是用的has one,当然有多条使用的has many,对吧。如果反向定义的话。啊,反向定义的话呢,也是用属于,你看我们评论它是不是属于一个。这个博客对不对。好,这个是一对多。啊多对多多对多的情况比较复杂。呃,我们的应用场景啊。没有一对多和这个一对一用的多,但是偶尔会用到,那什么是多对多呢?比如拿这个用户角色和这个。啊,用户和角色的一个关联表。我们来去理解。一个用户他可以有很多角色,对吧,同样的一个角色也可以属于很多用户。啊,这样的话,他们就存在了一个多对多的一个关系。
07:00
接下来看一看如何定义这个模型,我们拿一对多来进行举例。在我们T里面啊。看这个一对对的例子。一个啊,单个的模型,它有任意数量的一个其他的模型啊,比如我们的这个用户,它有许多的一个博客,所以我们可以去我们的用户表里面去定义它和博客模型之间的一个关系,找到用户模型。在这里可以定义。Public。Function block。把注释写好。用户啊。拥有的。
08:02
我靠。这里我们看一下使用什么样的一个关系,首先看看用户和博客之间什么关系,是不是用户发布了很多博客对吧,是用户有很多博客对不对,所以这里是啊,This。Has many?有许多什么博客是博客的这个类名。可以写字符串,也可以使用啊block。这个模型,然后使用它的class。这样我们就定义了一个一对多的一个关系是这个用户啊,我们这个用户他有许多的一个博客。如果我们的这个关联键不是标准的,比如说user-ID,比如我们的user组件不是ID,这个时候可以通过第二个参数去设置关联的一个键。外键我们用户表示主表,博客表示从表,对吧,那这个外键就是博客表里面的user ID,接着看第三个参数。
09:09
是local k啊,主键,比如我们本表的一个键,主表的一个键,优色作为主表,它的主件是谁,是ID,这样我们就定义了一个关联关系,是用户拥有了许多博客。啊,也就是他举的这个例子。当然它会自动确定,但是我们还是可以去手动去给他设置上我们的关键的键,接着看一下一对多的一个反向。啊,反向的意思就是说,我们在用户表里面定义的是用户拥有的一些博客。对吧,然后如果是博客表呢,它和用户之间是什么样一个关系。Public function user。啊,我们来看看作为一篇博客,它和用户之间什么关系,是不是博客?所属的用户对吧,它是一个属于的一个关系,因为博客作为图表嘛,所以这个关系我们就可以用。
10:06
Belongs to来进行定义,This,啊,Belongs to,哎,这个博客属于这个用户。那属于谁呢?属于我们的用户。U色冒号,冒号一定要使用的是U色的这个模型啊,模型内class。这样就定义好了一个博客和用户之间的关系啊,这个博客属于这个用户。啊,同样的,如果我们的这个关联的键不是标准的就是啊,这个表加上一个下划线加个ID。那么我们可以指定。第二个参数外键。啊,我们看一下博客表和用户表之间关系,博客是作为一个从表是属于这个用户对吧。所以说这个键是外键还是这个啊,从表的一个关联的一个外键是U-ID,而第三个参数是。
11:00
啊。Owner k就是所属的一个K所属的你看博客是数不是user啊,所以这个是user表面的这个关系。这样我们就定义了这个博客啊,和用户之间的关系,也定义了用户和博客之间的一个关系。啊。这样就是一个一对多的一个关系啊,我们就拿一对多举例。啊,我们常用的就是呃,一对一和一对多,其他的反而就是会少用一些啊。接着看一看我们如何去使用这个关联。在text里面进行举例。查询关联。看一下手册。由于啊icon的关联的所有的类型都通过的方法定义,所以我们可以直接去调用这个方法,无需真实的执行关联查询。而所有的这个关联的类型都可以用作查询构造器,允许我们在数据库上执行搜索之前啊持续的通过链式调用添加约束条件。
12:09
啊,这个我们已经都做好了。下面我们来查看一下啊,使用这个。当然我们啊。这里查询。我们的user,我们没有这个post,我们的文博客的名字是啊。Blocks。所以。哎,使用优色模型的这个block方法啊,优色模型的这个。Blocks方法。然后Y加上这个我们设置的条件。比如等于一啊,最后get。因为我们定义的这个模型,你看它是不是一个定义的关联关系,是不是一个方法,所以可以通过这个模型去调用这个方法。紧接着去附加上一些其他的一些查询条件啊,进行一个查询。
13:02
看一看啊,Blocks。能不能拿到啊,这个一用户的所有的补课。去test,不用测试是不是拿到他发布的这九篇博客。对吧,都有吧,啊这个就是。一个关联查询,我们可以在这个关联上用任意的查询构造器方法。啊,有忘记这些方法呢,可以去查询构造系统文档去看啊。接下来啊,他这里也提到要使用Y2的这个O的时候一定要小心,因为呃,他可能就是会和顶层的一个查询处于同一级别。所以我们会对这个O的话去进行一些这个分组。我们在讲这个首首页的搜索的时候,也说到了这一块啊,使用这个V2对我们的查询啊,包括V2进行一个分组。
14:04
接着看一看关联方法和动态属性的一个区别。啊,如果我们想要访问艾的关联的所有记录,而不附带查询条件,可以直接像属性一样访问关联。比如我们看一看访问用户的。所有博客。关联属性,动态属性。这个先注示点啊。也是先查询优色模型,然后直接使用这个属性啊,Blocks。诶,这样的话,我们可以拿到这个用户的所有的博客了,这里我们使用的是方法,使用方法的话呢,它会返回就是包含一个这个查询构造器的啊,一个对象。
15:00
啊,所以可以继续链式调用啊查询工作,其方法进行数据库的一些操作。而我们如果不想要附加其他的一些产品条件的话,可以直接通过这种动态属性的方式获得啊这个用户模型所关联的所有的博客,来看看结果是不是一样的。是不是一样的结果好?那接下来我们再分别打印一下。看一看它们之间的区别。区别,分别打印什么呢?先拿到这个user,分别打印user里面的blog方法和user里面的。Block属性啊,看一看这个方法的执行结果和这个属性的执行结果的一个区别。
16:00
属性呢,其实我们已经知道了,它是拿到了所有的这个啊,用户的这个关联的这个博客啊的模型,而我们如果是使用方法的话,你可以发现它返回的是一个啊。关联模型对象,然后关联模型对象里面呢,还有我们的build查询构造器啊,所以我们可以去继续使用查询构造器的其他的方法去进行查询。清楚了吗?接着看手册。动态属性是懒加载的,只有实际访问的时候才会加载关联的数据啊,因此我们通常使用预加载来准备这个模型所需要的关联数据,预加载可以大大减少啊,因为加载这个模型所执行的一些词汇语句,这个我们在学习啊,预加载的时候会通过举例来说明这个啊,接着看一看其他的查询方法,比如说查询。已存在的关联。在查询的时候可能需要将关联记录啊作为。条件。
17:00
比如说我们查询所有啊发表过博客的用户。来user等于什么呢?User的这个模型。然后。加上has blocks,也就是。查询所有发表过博客的用户,这样的话,如果有些用户他不存在这个博客的这个关联记录,就不会查到,就是将我们的这个关联的关系作为查询条件去进行查询,看一下我们的用户。是不是只有一条记录啊,当然啊,我们是数据库里。只有一条,我们再注册一条新用户,大家来对比一下就知道了。这个先退出。然后去注册。比艾特。
18:01
好。就是邮箱是吧。这地方写B。然后密码。好,又注册了一个用户啊,我们的B用户接着再去刷新。是不是还是只查到了这个。一这个用户因为B没有发表文章对吧?这个就是将啊我们的关联关系作为查询的条件去使用。接着看。也可以啊,通过运算符进一步制定,比如说数量大于这个三的,就是比如说发表过三篇以上的这个博客的啊,或者说这个啊,数量等于多少的。就是如果有,就是我们的这个博客模型,还有其他的一些关联关系的话,可以用点的方式继续去往啊,这个博客相关的关联的这个模型去查询是使用点。
19:04
如果还需要更多的功能,可以使用where has,或者or where has啊,将where条件放到这个has上面,这些就是带这个has的,都是和这种模型相关的。你像where has的话啊,可以去在这个B包函数里面去进一步的写我们啊更多的一个筛选条件。嗯,包括不存在的,不存在关联的,就是和这个。啊,刚才我们的has是进行一个反向操作的,也查出所有没有啊,评论的就是没有博客的一些用户就可以使用doesn't have。这我们来看一下啊。啊,同样的它还会具备啊相关的where答案have和刚才的我们的这些,前面这些其实都是是啊,相反着来的啊。先看一看这个。查询,比如说查询不存在的,查询不存在关联。
20:05
数据的。使用这个。把它改成user,然后这个模型使用我们的user。查询不存在博客的,也是我们现在查没有发表过博客的用户。是不是得到了这个二这个新注册的没有发表过博客的用户。那就是。关于。作为条件的一些查询啊。多肽的我们先不看啊。还有就是模型的一个技术,如果我们仅仅是想知道啊,这个用户发表了啊,多少的一个文章可以使用。这个位子看看。关联模型技术。
21:04
关联模型技术。还是user啊,它的这个结果,我们如果用user模型的啊,这个模型去查它的结果还是user,只不过它会把这个我们博客的这个数量作为一个属性给附加到是吧,我们的查询结果上面看一看啊。刷新一下。两个用户对吧,都拿到了,然后看第一个用户是不是多了一个字段叫blocks count是九,就第一个这个用户发表过九篇book,而我们的第二个用户。看它的字段是啊,Blocks count是零。对,这个字段名也是遵循一个默认的一个约定,就是我们啊关联的这个名字,它给我们连上下划线看看。
22:00
这个是关联模型的一个基数啊。但如果我们。不想使用默认的那个名字。还可以去。自定义这个名字。要自定义名字的时候呢,就要写成这种数组的形式了。当然他还可以接受一个啊B。BB函数去完成。更多的一个技术。如果我们配合select和这个wait count去使用的话啊,要这个在select方法之后去调这个count。才。接着就看到了我们的预加载。当我们以属性方式访问aloqu模型的时候,关联的数据是懒加载,就是我们用到这个数据的时候才会进行加载,也就是第一次访问属性时,关联数据才被真实的下载。不过icon能在查询附模型时预先加入子关联。预加载可以啊,缓解N加一查询的一个问题,接着看一看什么是N加一,比如。
23:06
啊,我们。要查这个书籍的所有的作者,就是获取所有的书籍,以及书籍的所有作者,先把所有的书给查到,对吧,接着要拿他的作者怎么办,是不是要循环这个所有的书,然后通过这个属性的形式。呃,一一本书一本书去拿它做的,这样的话,我们有多少书就会进行多少步查询,因为啊,我们用属性的方式的话,是在第一次使使用这个属性的时候,它会进行一个查询。这个循环将会。嗯,执行一个查询,同时这个为每本书执行获取作者的一个查询,你看如果有20本本书将会运行26查询,一个用于查询书籍,25个用于查询这个作者的一个。关联的一个信息。对吧,如果我们数据非常多,比如有100个,1000个,1万个,那你要循环的时候,是不是会造成非常大的查询的一个浪费。还好我们有什么有预加载,可以将这个查询只压缩到两个查询。
24:04
就是在查询这个所有书的时候,我们使用这个位置属性,也就是说啊,同时关联上这个书籍相关的这个作者的模型,同时一块去查。这样的话啊,实际上在执行这个SQL语句的时候呢,它是两个S语句,一个是先查所有的书,然后使用with in。威尔进去查所有的这个作者,只有两条思,其实这时候我们去循环的话,只是在读这个一个呃,对象的一个属性而已。可以看一下他拆解的这个查询是先查了所有的书,接着是啊查所有的这个作的时候使用五音对吧,这样的话我们的查询就得到了一个优化。我们来看一看,我们也可以去写这个例子啊。预加载。比如我们查所有的用户。
25:00
哦,对吧,同时我们还要还想要去查这个用户,所有用户,然后发表的所有的这个博客怎么办,你是不是要循环。对不对,那不要你循环一次去查一次,是不是很浪费性能,这时候可以使用with进行预加载,也就是我们在查询所有用户的同时,去把它关联的这个blocks的信息都给插上,这时候我们去打印这个优色数据,你去看一看。Get方法。看一下啊,第一个用户。我们找到一个。啊,关联这个属性。它里面是不是有一个block的关联,然后是它的所有的数据,对吧,也就是说我们在执行这个查询的时候,就把所有的这个它相关的人的数据都给拿到了,我们后面再循环,只是在读这个对象的属性而已,访问这个对象属性而已。
26:07
兄弟们,这样可以减少我们这个查询的一个消耗。如果要嵌套多个关联。使用数组的形式去写就行了,那什么是多个观点,就我们用户他有可能是有多个博客对不对,他有可能也有啊多个的订单啊,还还可能有多个的其他的,或者有一个其他的,你要只要是。要同时去啊,预加载多个关联的时候,就把这个改成数组就可以了啊。嗯。预嵌套,预加载,那什么是嵌套与下载呢?比如我们想要在拿所有用户,就是查所有用户的同时,把所有用户发表的博客也给查出来,但是在呃,查这个博客的同时,要把博客所有相关的评论也查出来,这时候什么可以干什么呢?继续使用点的形式去。啊。把这个博客关联的这个评论也都给拿到,当然我们现在还没有这个评论的一个关联,等到后面我们写实战的时候就会用到。
27:09
这么一句话的意思就是说,我们先查询所有的用户,同时把这个所有用户的这个他们各自对应的博客都给查到,在查询博客的同时,同时再把所有博客相关的评论都给查到,这个就是嵌套啊,预下单。你看就是这样。啊,接下来看一看预狭窄。啊,指定的列。这时候你看我们查看这个博客的时候,他是把博客的所有的列都拿到了。你看到了吗?博客所有的列都拿到了。是吧,有时候有些字段不是我们需要的,我们可能仅仅需要这个博客的名字啊,这时候怎么办?可以预加在指定的一个列啊。把这个先注释掉。
28:01
预加载指定列使用什么呢?使用冒号之后,后面跟上我们的列啊,一个是ID,一个是抬头,好,这时候我们再看一看。找他的这个关联关系。没有对吧。因为他的这个关联的键是UID。是不是有了九个博客,对不对。然后只有user ID和title。是吧,啊,为什么要啊,带上这个关联的键,如果你没有这个关联,不查这个关联的键的话,它和这个用户就关联不起来了。对不对,一般你要做其他的一些操作的话,可能还需要再多上一个ID。关联的键一定要给加上。
29:01
知道吧。你要注意,在使用这个特性的时候,一定要获取列的列表中包含ID。是吧?这个要看你查的什么表,我们查的是从表,所以我们要包含了这个关联的字段,它是什么?他是查这个书啊,所属的这个作者,所以它是要显示这个作者里面的这个ID字段,也就是要显示要查的时候,同时把关联的字段给查上啊。并不绝对是ID,这个只是说关联字段的意思啊。就是呀,你看我们每次啊,如果有一个模型,每次在使用的时候都需要依赖一下它其他关联的数据的话,可以把它配到模型里面,这样的话,每次我们查这个模型的时候,会自动帮我们进行一个默认的一个预加载。嗯,一般的话。除非你有必要你去配一下,没有必要的话,我们还是用到的地方去关联就可以了。
30:08
在进行预加载的时候,使用with预加载的时候啊可以就是。进行一些其他的一个约束,比如说只查这个。啊。博客的这个ID。嗯,大于多少的来试一下。为预加载添加约束,拿这个例子来举例啊。看现在我们是拿这个用户所有的所有用户的所有的博客对吧。啊,我们通过刷新也知道拿掉了九条数据。这里关联关系这里啊博客。是不是拿到了九条数据,对不对,有时候我们不需要这么多数据,需要加一些约束,怎么办就可以把这里。啊,位置这里去改成这个数组,然后。
31:00
见识。我们。要关联的。模型啊,数组的这个Y就是一个B包。B包里面可以去写我们额外的一个查询。然后这里有一个query查询构造器啊,这个query呢,就是它相关的一个查询构造器啊,是我们关联这个模型相关的这个查询构造器,所以你这里面写的这个Y2啊,是针对这个模型的,对吧?针对要关联的这个模型的,我们Y2什么呢。ID,也就是博客的这个ID大于。嗯,看看我们的数据啊。我们有什么?从第五条开始的,是不是?好25,我们就查这个ID大于25的吧。那这里是25。看看能不能把它前面的都过滤掉。25。
32:09
是不是只加四条了啊,这些都是ID大于25的。这个就是在进行嗯,预加载的时候,可以添加一些约束啊,去限制我们预加载的关联模型的一个。啊,数量啊,或者一些条件也好。就注意啊。使用约束,预加载的时候不要使用里米塔和T。接着看一看。插入更新所关联的一个模型。插入和更新数据库,我们之前啊已经学了很多了,包括这个通过这个查询C啊,或者通过这个模型提供的这个啊save方法呀,或者是我们的create方法对不对,但是我们还可以通过什么呢?这种啊关联模型去快速的去保存方法。
33:02
保存数据。先看一下保存。也就是说啊,我们如果想要。就是用户要发布一篇文章的话。是不是还要记录一下这个用户,就是文章表里面的用户的一个ID,对不对,就像我们之前发布文章的代码,来看一看。Blog controller。看看用户发布文章的这个代码。上面。好。这里啊。是不是还要把这个用户的这个ID给他写上,你看我每个方法都写了对不对。一直到最后我们去使用的时候,也把这个ID给附加上了,对吧。那。既然我们用户和博客之间存在一层关联关系,就可以使用什么呢?使用。啊,用户表的这个关联关系里面的这个私有方法,直接去进行这个数据的一个保存。
34:03
而不用再去。啊,附加上这个ID。这个就是模型的一个快捷的一个插入数据方法。假如你看我们要添加一个数据到一个模型上面,不用在这个,呃,博客里面,我们把这列成博客,去手动添加user-ID属性是吧,可以直接使用关联模型的自有方法。啊,将这个数据直接插入。我们来试一试啊。首先你要啊得到一个用户,就是说每个用户去发布的,当然我们这个发布博客的时候,可以从啊当前这个also里面去获取当前登录的一个用户的一个模型,对吧?这里我们test里面举例,我们就去查一下用户。啊,手动去查一下用户。Model find2吧,我们是不是还有一个二的用户,是新新加了一条用户,而且他们有什么博客吗?
35:00
好,我们让这个二是。发泄不好,现在我们已经得到了模型了,而且这个模型用户的这个模型,它是不是有这个blocks的这个关联的这个方法。对吧,我们可以调查这个关联的这个模型的这个方法里面的save啊,快速去存储这个数据。啊,当然要存储的数据是什么呢?是一个啊,新的一个啊,Blog的一个模型。啊,你要先创建一个blog blog的一个模型,比如说blog等于new。Blog。然后这里面给上我们要。去复制的一些数据,比如有title。好。还有什么呢,有。Content是吧?还有。啊,这个分类。
36:00
这几个是必填的一个字段,对不对。本来还有优秀的ID,但是因为我们使用啊这个方式。就不用去使用UID了。分类随便写个一,接着我们把这个我们新创建的这个博客模型的对象放到哪呢?放到了这个里面。啊,通过user调用关联关系这个方法,然后把我们的新定义的博客的模型放到Excel里面,就可以快速的去创建这个数据。啊,看一下这个例子就是这么写的,那。我们来执行一下啊。看一下博客的一个数量,现在。啊到ID29,这接着我们执行完之后看一看这个博客表。现在回我们的博客表刷新一下。把这个先关掉啊。是不是多了一条记录,而且这个UID是二啊,这个我们就是通过啊模型的关联方法去向关联的这个。表去插入数据。
37:01
啊,可以使用这种方式,这样的话就可以不用去写这个UC-ID了,好,这是一种方式啊。接着往下看。这里有我们要注意的地方啊,我们不是使用动态属性的方式去访问他的观点,而是调用它的这个方法,因为我们如果是使用属性的话,直接得到了这个结果集,对不对?只有我们使用方法的时候才可以获得这个关联的一个实例啊,这个实例我们使用它的这个save方法,可以自动的将我们的关联的ID添加到这个模型中。如果要同时保存多个,可以使用save money啊,这个大家可以试一下。接着往下看。还有一个新增的方法,除了C和c many外,还可以使用create create呢,直接接收一个数组,这个比较方便,因为在使用这种方式的时候,我们还要去创建一个对象。同时啊,会把这个模型插到数据库中。
38:00
还有就是save方法和create方法不同时在于save它接收的是一个完整的aloqu的模型实例,也就是我们这里去new的这个模型的这个实例是私有方法接受的一个参数。而如果使用create方法,只要接收一个普通的数组就可以了。接下来来使用一下create方法。把这个注释一下。这些是我们需要的,然后使用。有的。所关联的这个模型的。啊,可以的方法。里面接出一个数组。就可以完成数据的创建。我们复制这个数组。
39:00
是不是不需要我们的用户ID呢,会自动给我们关联上啊。执行一下看看现在里面是只有这么啊一条数据,等我们执行完之后,看看会不会新增一条。啊,没有报错,看一下数据。是不是新增条,所以使用啊这个关联模型的壳的方法是比较省事的啊。但是在使用的时候。要务必保证我们这个模型。啊,设置过这个允许批量复制的这些字段。因为可方法它会受到模型的啊这个。批量赋值的这个字段的一个影响,如果不在这里面的话,我们就不能使用这个create矩型批量赋值,这点需要注意。啊,当然也可以使用create去创建多个。关联的一个模型。
40:03
我们常用的模型相关的。啊,使用的方式就这么多,主要的就是去啊获取这个模型使用的比较多的,然后偶尔还需要去啊插入这个模型相关的一些数据。这个就是模型之间的一些关联,包括如何去在模型里面去。设置它们之间的一个关联关系,随着后面不断的使用和深入了解,大家会越来越熟悉。
我来说两句