00:00
这节课我们来完成一下。我的购物里面的一个地址管理的一个模块。首先我们来看一看京东的这个添加地址都需要什么数据。啊,其实这些都是输入框对吧,那最主要的是一个什么数据呢,就是这个地区的一个选择。啊,所以我们要有一个接口,能提供一个地区的一个数据。这个一定要后台有API,能提供这个地区的数据,不要认为说你前端找一些组件去完成就可以了,那么你这么想,你为有你找一套前端小程序,你找一套这个前端的这个城市的组件,对吧,你relax或者你的这个APP应用又找一套,那你这个各个端的每个都不一样,你怎么能保证数据在我们数据库里面都一致的呢?所以这个数据要由我们。后端哎,我们的这个API统一的去提供。清楚吧。啊,你可以用不同的组件对吧,但是你这个各个不同的组件,这里面的数据一定是我后台这个API来提供的。
01:02
哎,所以我们需要有一个接口,能提供这个城市的一个信息。啊,这里呢。为大家找了一个啊,这个城市的,就是中国城市的一个省市县的一个表啊,一个所有的数据一个表,这是比较完整的一个表。接下来呢,我们要把这个SQ语句导入到我们项目的这个数据库中。然后通过这个表,然后我们写。城市相关的一些查询的一些接口,哎,为我们添加地址,提供省市县的这么一个啊,这么一个接口。这么一个API。那接下来我们想一想,怎么把这个SQ去导到我们的项目中啊,当然有很多办法啊。嗯,你可以使用一些MYSO的工具,直接右键导入就可以了,一些图形化的工具,还可以使用MYSO的命令。来看一下,先连接上买搜狗啊,进入MY搜Q的控制台杠U。
02:03
因为我们用的是home,它所以它用户名so,用户名是home state。好杠P,密码是S。连接到这个MY搜Q啊,进入到这个控制台之后,就可以使用它的这个SS命令,然后加上我们啊,我们这个city点搜Q这个文件的一个位置,当然不一定是这个位置啊,你要根据你这个搜文件所在的真实的一个位置。那就可以把。这个数据导入进来啊,但是在导入的时候呢。你要先啊去选择对应的一个数据库,就是先看看我们都有什么数据库啊。啊,我们有这么多数据库,我们使用的是A数据库,所以说我们要先使用这个用的这个API数据库。
03:00
啊,选择好数据库之后,就可以使用source,哎,加上我们的呃,city.circle的这个文件的这个位置,把它给导入到这个数据库中,听到吧,啊,这是一种方式啊。我们就先结束掉啊,当然也可以使用什么呢?啊,使用这种方式比较麻烦,就比如我们在部署项目的时候,我们还要记得去导入这个数据库才行,对吧。啊,我们既然使用了啊,数据迁移,我们就想办法,能不能说,哎,我们把这个。城市的这个表也通过我们的迁移命令给导入到我们数据库中。我们来一起看一下。首先啊,创建一个。迁移文件p art。Make c啊,创建一个填充文件。创建好这个文件之后,在数据库这个位置下。哎,这里面就会多一个这么一个文件,我们想办法在这里面把这个文件的内容去添加到MYQ。
04:05
这个文件啊,city.so它是一个文件,所以我们要想通过代码的形式把它去,嗯,插入到MY搜Q的话,我们必须得先读取这个文件,对吧?读取到这个文件的内容,然后把文件里面的内容,哎,我们通过执行一个一些命令,把里面的内容去写到MYSQ里面是不是?所以我们先复制一份这个文件啊,放到我们的项目里面,这样的话,它能随着我们的项目一起去进入这个版本户或者一起去啊。同步到服务器上。嗯,建一个circle目录,用来存放我们circle相关的一些数据。好,接着把这个CT粘贴到这里。啊,这个文件就在这里了啊,这个文件注意一下,它是就是很原生的一些搜狗语句,就是吧,你看如果存在这个表会放弃,然后去创建这个表,接着创建完表之后呢,向表里面去插数据啊,就是很原生的啊一个搜口语句,所以我们只要想办法能执行这个原生的一个搜Q语句就可以了。
05:00
对不对。也就是说我们在这个CR里面,只要能想办法执行这个搜索语句就行,并且这个搜索语句来自于读取的这个文件的一个内容。知道吧,好。也是我们分两步啊,一是读取这个文件的内容,二是啊,执行这个文件里面的这个原生的一个circle。啊,我们来看一看。手册啊,手册在。在快速入门里。这个啊,你看它可以直接去运行我们原生的一个SQL。我们的这个迁移文件就比较好写了,对吧,第一个是先读取。这个文件的内容,这个文件里面呢,是原始的这个搜Q语句,当我们读到这个内容之后,然后使用DB的这个方法去啊,把这个内容去执行一下,把搜狗去执行一下就可以完成我们。啊,这个城市表的一个创建,并且完成数据的一个添加。来我们来写一下啊,首先复制一下这个啊。
06:02
啊。创建。城市表,并填充数据。这个DB我们要手动打一下,让他去引入这个门面。然后那这个语句就不是这样写的了,而是直接从这个文件里面去读取啊,读取文件的内容可以使用费用get content,然后是文件的一个目录啊,就是文件所在的一个位置,我们用杠杠。Di-D呢,是当前这个类啊,就是这个类所在的一个目录,它是不是这个目录,所以他要去上一层里面搜Q里面去找这个CT文件啊,所以要连上。用点连上它的这个点,点杠上一层里面的这个circle里面的ct.circle诶。这样。啊就可以了,看什么。
07:02
啊,这样就会创建层次表,并且填充数据,我们先来单独去运行一下这个C,看一看数据能不能填充上,先来看数据库是没有这个C表达。没有了是吧,来。接着我们。运行迁移啊,DB运行数据的填充。C杠杠指定啊,指定这个类。啊,因为数据有点多,可能执行有点慢啊好成功,那接下来去刷新一下数据库。哎,是不是就多了一个城市。看到了吗?来我们继续看看数据,就是我们的这个城市的信息对吧,有一个level是就是说几级几级啊,一级是顶级的一个城市PID0,然后它里面有其他的一个子集的话,会有一个PID,对吧,它拉变成二这样我们的省市县。就。导入完成了这些数据啊,那接下来干什么呢?把这个文件放入到我们默认执行填充的这个里面。
08:08
放到这里面,这样我们在新项目就是部署上线的时候,只需要执行一个啊DBC的就可以完成这些数据的一个填充。好吧。把这个改改啊。啊,因为刚才我们为了测试,就是单独执行的这个指定的这个类。接下来啊,这个城市的这个数据已经有了,那么我们接下来为城市去创建一个模型。好吧。要不然我们再去操作这个城市相关的这些数据的时候不太方便。Make啊,Make model city。好,创建一个城市的一个模型啊。在APP里面,这里就多了一个模型。嗯,它默认会去找这个负数的一个C特表是不是啊,所以我们干什么呢,加上一个这个属性。
09:10
直接设定这个表明好,这样的话他就去找这个city这个表,因为我们不加这个的话,它默认去找它的这个复数形式吧,我们这个表是不带就不是复数形式啊,所以我们这里指定这个表明啊,指定。模型关联的表明。那这样的话,我们城市的数据包括模型都创建好了,就可以开始去写我们的API,首先来分析一下。这个收货地址。它呢需要啊这个省市县的一些数据对吧,这是这种的一个使用方式,还有那种是下拉框的,比如先选择了城市,再选择了,先选择省,再选择市,再选择这个呃乡县啊,还有这种的,所以我们这个API的话,要兼容很多种模式,一个是能支持这种,呃,一级一级的去往下选的,还有一个方式就是能支持这种啊,直接就是把这种。
10:08
啊,数据能直接给到这个组件的。啊,所以我们要支持。这么几个形式。首先来完成一个树状的一个地址啊。先去创建一个API。路由。嗯,这个放到需要登录里面吧。地址。Get就可以。City。没有控制器了是吧,先创建一个控制器来,这个要注释掉,创建控制器的时候,你路由一定就是说路由文件一定得正确,所以我们先把它注释掉,再去创建控制器,要不然它会报错。
11:12
好创建完成啊,这时候把这个打开。放到。City controller。数组啊。这个是城市数据的一个控制器。哎,我们在写地质管理的时候,再去创建这个地质管理相的一个空隙。啊,它应该是只用一个index就可以了。去这个里面写个那方法啊,继承贝。
12:00
省市县。数据啊。哎,我们先返回一个树状的一个省时线的一个数据。等于模型里面去查啊。它呢,其实类似于这个分类对吧?哎,所以我们想想分类当时怎么实现的,分类是不是在这个模型里面,我们创建了一个关联,和自己表的一个关联。来,找一找模型看一看。分类这里。哎,是不是就是说创建了一个自己的一个关联。对吧。那其实我们城市也可以这么去处理啊,我们在城市里面也创建一个啊。自己的一个子类,因为他们都是相似的一个格式,都有PID,都是这个啊往下啊,不断的去有自己的一个子集。
13:00
好,这类。啊,当然关联的字段也是一样,也是ID,把那个类换掉,CT我懂。然后这时候再去查城市的数据就比较简单了,哎,比如直接。嗯,也没有状态,也不用加什么VR条件啊,直接位置去关联上啊,就是在我们查城市的时候呢,去关联上。他的这个子集就可以了,对吧,同时拿它子集的子集,这样的话三级就有了。我们这个城市表呢,刚好也是。呃,到这个。三级啊。看一看。啊,到四级那个城市。好到四级的话呢,那我们还要再再拿一层。直接get。来我们先啊,这个city,我们来看一看这个数据啊。
14:00
请求啊,这个地址。登录下。api.test API。因为数据有点多,所以查的比较慢。哎,我们这是查所有的。因为城市的数据比较固定,所以我们先把功能测试通以后,这个是肯定要建缓存的,肯定是使用缓存的。因为数据量太大,执行时间太长,超过这个脚本的一个执行的一个时间啊,所以脚本执行失败。我们先加一个VR条件啊,先让它呃能把数据显示出来,我们看看数据的一个结构啊,加一个什么VR条件呢。比如说where ID,我们只拿这个省,就是说省的ID小于二的呢,或者说就等于一的一的是不是只有北京市只拿,我们只拿一个式子看一看。
15:15
啊,这样先看一看数据结构。首先是我们的那个省啊,因为北京市直辖市嘛,所以直直接就是北京市,然后是它的子集,然后是子级的子级对吧,最后一级他没有第四集,所以就是空。哎,说明我们这个语句是没有问题的,哎,但是因为数据量太大,所以它执行啊脚本超时,那这时候怎么办呢?我们应该想办法。啊,让他在迁移的时候就建好这个缓存,就不会出现这问题了。知道吧,因为我们在,呃。后台去执行这个脚本的时候,它不会有超时的这么一个概念,但是我们在请求中它会有啊,脚本执行超时的这么一个概念。接着去改一下我们的迁移文件。
16:01
找一下文件。啊,填充文件。这里啊。呃,填充成功之后,我们建立缓存啊。超过了这个最大的这个PP的一个内存限制。所以说。我们缓存所有的还是会存在一些问题,它数量实在太大了。那我们就呃拆开来写吧,对吧,我们去先把所有的省给缓存起来,哎,然后再获取到这个省之后啊,拿到这个之后再去拿这个。是相关的数据,哎,我们一级一级的往下进行,这样的话数据量不会太大。来改一下代码啊,那就不在这里去创建这个缓存了啊。
17:03
嗯,直接去辅助函数里面去创建吧,好吧。找到我们的。Help的函数啊。在这里面我们写几个辅助函数,一个是缓存所有的这个省份的一个辅助函数,一个是通过省份去拿这个省份下所有城市的。啊,这么一复制函冲,再有一个是通过啊这个省份去拿啊,省下面所有区域的一个啊,我们就做到这个三级。复制一下这个。所有省份的一个缓存。啊。啊,这时候就可以使用开启。来。
18:01
他的这个这个方法。Forever。Power。一个B包函数。然后是我们数据的一个查询语句。City。Where PID等于零的是所有的省份啊。嗯,还可以,哎。让。他的这个ID啊。就是做这个键。
19:02
什么?那这时候。哎,我们修改一下。你的这个空气啊,在一进来的时候,我们去返回所有的这个省份。返回的一个数据啊,就是你什么参数都不给我啊,我给你返回这个所有的一个省份,如果你传了这个啊,比如说省份的ID,我给你反馈所有相关的一个市。然后你给我传到这个城市的ID,给你返回所有的一个地区啊,接下来再看一看。没有数据啊,我们这个辅助还是有问题。这里你得才行啊,我们这个辅助函数,你如果不数据的话,这里它是接收不到,拿不到这个数据的,听了吧,再来看一看啊。是不是得到所有的这个。
20:01
啊,省份的一个信息了,并且是用他们的ID做建。这样的吗,好。啊,接下来继续写其他的一个辅助函数,我先把其他的都关掉啊。嗯,把这些折叠一下,找到控制器。接着去写啊。啊,这个其他的其实就是呃,通过子ID我们去拿他的。啊,通过负ID去拿他所有的子ID就可以了。啊,所以我们缓存一个这么一个方法。接收一个dota PID。啊,那这个其实查询条件。V2PID,哎,就是我们的这个PID,这里要使用use才能使用web的一个变量。好。
21:01
那这个缓存的键呢,我们每个键也要不一样啊要。用这个加上一个,你再连上一个PID,这样的话,每一个负极哎,它相关的子集都会被缓存起来。清楚吧,比如我查了啊,我传的这个PID是一,就是拿北京市下面所有的这个区好,这样的时候他会连上我北京的这个ID,然后把它的这个所有的这个区给缓存起来啊,我们这样呢,一点一点去建这个缓存,要不然我们一次性所有去建,建立一次性的一个缓存的话,它。占的比较大啊,会超出一个内存的一个限制。当然你可以通过去修改pv.ii去修改这个内存限制,没有必要啊。这么来就可以了啊,那我们来测试一下,比如我。啊。那其实我可以把它们去写成一个函数。啊,改成一个就是CT开启啊,城市的一个缓存。PID默认等于零,也就是你可以不传听什么可以不传。
22:05
啊,默认等于零,好,那这个其实可以不要了啊。这个就是城市相关的缓存信息啊。嗯。那我就这里就调这个吧,对不对,我现在不传,不传的话,我就拿这个顶级的嘛,是不是拿这所有的神看一看。结果一样的是不是好。现在我传这个一我。等一下,有个方法错了。K带啊,这个带这个S。再来看一下。哎,我不传ID就是零嘛,就是拿所有的这个省嘛,好,那我如果传一个一,我拿这个一,哎,这个PID为一的,就是北京市下面所有的一个。区看拿到了是不是好,接着还可以干什么,比如说传30区,我拿东城区下面所有的,呃,更详细的一划分。
23:03
看一下啊。啊,是不是好,我们这么就简单的写一写了啊,啊request,当然这个API,这个数据我们应该让。用户就是说自己就是说使用API的地方,自己去传这个这个这个数据啊。Request里面的啊,PID。就可以了,哎。这个让用户自己去传啊,那你不传就拿所有的这个。这个是孬了啊,全是孬了。所以。这里我得用query啊,加上一个默认值给个零啊,就是你不传的时候是零,要不然不传的话,它是这个闹闹的话找不着这个数据吗。啊,是不是,然后我们可以传一些参数嘛,传一些PID。哎,比如说一我拿这个二吧,拿这个。啊,那这个省好,这样的话,我们就把这个省市县的一个数据简单的写一写,你这样前台用的时候呢,他可以怎么用。
24:07
首先看一下啊,他一开始这个省市省份这里他可以传就不传那个PID,他可以拿到所有的省份对吧,完了我点哪个省,我就传哪个省的ID过来,我就可以拿着这个省下面所有的一市是不是,然后点哪个市,我可以传一个这个市的一个ID,我就拿这个市下面相关的一些县。是这样吧。啊,当然你如果再传了县,我就可以给你拿这个县下面的所有的一个乡,当然你这个乡可能有的就没有,像直辖市可能到三级就没了。哎,所以有时候会是一个空的一个数据。哎,这个所在地区我们就处理完了啊啊,接下来去写。呃,个人中心我们创建地址相关的啊,一些内容,首先我们要有一个地址表对吧。创建一个地址表。PP artisan。
25:00
冒model创建模型的同时。啊,加上这个杠M参数。同时给我生成签文件啊,我们创建一个啊address的这么一个表。同时生成签文件。接着去迁移文件里面去,嗯,设置我们的表结构。来这个啊,在这里面去写我们的表结构。Int一个user-ID首先会有一个用户ID对吧,这是谁的属于谁的一个地址嘛,谁创建的吗。啊,用户ID。接下来哎,就是看我们这些需要的一个字段对不对。啊,那首先有一个收货人,还有一个呃,收货的一个地址。收货人。然后所在的地区详细的一个地址。
26:08
复制一下啊。收货人,我们用name吧。这个是啊,字串类型。嗯,接着有一个这个地址是吧,这个地址呢,我们存存ID啊。存ID。也就是我们的city-ID。是什么地址,我们存一个字段就可以了。知道吗?比如我们存的是。比如说是直辖市的直到线是吧,我们比如说直到线,我们存的是线,通过线我们可以一级一级往上找,找到的它的市和所属的一省是不是,比如说我们除的存的是一个正正的ID,可以一级一级往上找,一直找到就是它的这个省,所以我们只存最后一级就可以啊。
27:04
清楚吧,所以这个我们就只存一个CT-ID啊地址。City表。表中的ID。啊,接着往下写啊。然后是详细的一个地址,就是他对这个地址的一个描述,应该是一个字符串就差不多够用啊。用这个字段吗?详细地址。接下来看看还有什么字段。手机号。手机号我们也用字符串。手机号。这些都是不能为空的啊,都必须得填才行。接着看一看。邮箱我们就不要了啊,地址的别名也不要了,包括啊这些什么的位置也不写。
28:02
清楚吧,啊,但是我们给一个字段,给一个这个是否是默认的地址啊。是否是默认地址,所有的地址里面默认地址只能有一个啊,就是当我把比如说一这个地址设置为默认,那其他的2345这些地址都要取消这个默认啊,这是一个规则。是不是默认地址。At。那我给个默认值DEFAULT0嘛,一开始创建我们不是默认地址,要手动去设设置啊。零不是默认。一是默认。好,这个是时间啊。
29:04
然后接着去加一个索引吧,我们常用的查询字段加上一个索引,加一个普通索引,像右侧杠ID,我们是比较常用的,比如说拿这个用户下所有的一个地址是不是。啊,其他的就还好,不是特别常用啊,那就创建一个有色干净的一个索引。表创建完成之后啊,执行迁移为我们生成表。Migrate。啊,创建的地这个地址表,接下来就可以去,哎,写我们地址的CD。哎,它是一个标准的一个资源路由,所以我们创建这个API资源路由控制器make。Rar放到API目录下啊adss,然后杠杠API创建一个API的啊,这个忘了加CTRL了。我们找到这个把它删掉,重新来创建一下。API这里面把这个给删掉。
30:02
看出来了。好。把这个改改成贝啊,继成基本的这个control这个就不要了啊,我们把注释写一写,然后去写这个资源路由啊。这个是地址列表,就是我的地址。那人我的出道有地址啊。啊,这个是添加地址。这个是一个地址的详情,地址详情。啊,这个是更新地址,所以它是一个很标准的一个啊,资源控制器啊。更新地址。然后是删除地址啊,地址是可以删除的。你看吧,不写删除也行,因为有的比如说他购物的订单是和这个地址关联的,这时候删除的话反而不合适。
31:04
但一般的话呢,也会提供一个删除,我们大部分常见的购物都会提供一个删除,不影响,因为他们订单在生成的时候,不管你的收货地址,还有当时购物的这个商品的状态,都会生成一个临时的快照。清楚吧,好,那我们也写上这个功能吧。再来写一个。啊,是否是。这个设为默认啊。这用这个方法吧。设置为默认地址。啊,那方法已经准备好了,接着去创建我们的资源路由。把这些都关一下。找到路由文件。
32:07
这个注释写啊。省市县。数据。这个注释写一写啊。订单获取支付信息。之前这个里面也有注释,有问题改一改。这个应该是订单列表。订单详情。以及呃,订单的发货,这个是。这是我们后台API相关的东西啊。
33:03
啊,注释有问题,然后今天把它改一下,接着来写。我们地址管理相关的一些功能。首先写什么呢?先写添加例子。因为呃,它这些是一个资源的一个路由啊,所以我们直接。去用一个resource。资源的定义就可以了。摔死,然后是类名啊,我们的昆仑姓名。Ctrl class这样去定义资源路由地址。相关的资源内容。啊,当然我们还得单独写一个啊,设置为默认地址。那设置为默认地址呢,要用get啊,或者这个开启方式是一个更新操作。
34:07
传一个。这个的实力。加个后缀就可以了啊。那这个就不能用这个啊,要用一个数组,然后加上它的deft方法。单独定义一个设,是否设置为默认的一个地址?那接下来就可以去。哎,完成。我们的功能了,先写添加地址啊。看一下表结构。添加地址。啊,Username city地址,然后是手机号,这个字段还是比较多的啊,所以我们去创建一个啊验证文件就是表单验证类啊,不在这里去写验证了,看一下我们的表单验证类。
35:02
在AB request里面。Also admit,我们前台是不是还没创建过,好这里创建一个前台的。PP artisan make request放到API下面,然后是A。Request。啊,创建这么一个。表单验证的一个类。在这里面啊,文件在这里面,然后让他继承base request,因为在base request啊,不是不是这个。Base。Request,因为在base request里面,我们继承了这个form request,并且同时把它改成了出,只有它会出的时候,我们这个表单验证才会生效是吧?哎,所以这里面去写我们的验证规则就可以了啊啊,这里写我们的验证规则啊啊。嗯,那这里就要用上。Address request。
36:01
啊,这样才能生效啊。那这里我们写什么规则呢?一个一个的去写呗,比如说用户ID不用啊,用户ID我们可以从当前登录的用户里面去获取嘛,然后是。啊,内幕是一定要有的啊。Name,你必须得填requiredi required。啊。然后这几个基本上必填的,我就先把record写上啊。城市这个ID啊。地址,地址的一个详细的一个信息,还有就是手机号对吧。手机号啊。嗯,其他的就不需要了。行。呃,内必填。这个必填就可以了,长度的话你可以加限制也可以不加啊。啊。啊,城市ID他不仅要赔钱,并且。
37:04
他还要在这个CT表里面存在啊,CT表存在,并且是查这个ID。啊,你不能随便给我传一个。清楚吧。呃,更加准确的说,不仅要存在我们,至少这个CT的ID呢,你至少得是三级或者是四级才行。是不是啊,所以这里我们就要写自定义的一个验证,自定义验证就不能用那个竖线分割符了,就要用数组了。什么啊,一个是required。再来一个,就是我们可以写自己的一个验证规则。那它有三个参数吹表value value是验证的这个字段啊,然后是一个啊,Value就是失败的时候的一个提示信息啊好,那接着我们就来。去验证这个ctd啊。City等于city。
38:03
哎,这个模型do value。因为这个do value就是它嘛,所以我直接按这个表里面去查这个ID嘛,是不是。啊,如果它不存在。哎,就是Unity这个城市不存在。那说明你是随便输了一个地址是吧,不是说表里面存在的,我们直接就给你验证不通过啊,直接fail啊。啊。城市。就是。这是我们的这个城市字段,看看。啊,地址啊。区域地址。不存在。好,这是这样的话,然后还有一个什么情况,就是说如果你是不为空查到了这个数据,但是你的这个level啊,不等于三,或者这个level不等于四。
39:09
也就是你不是三级和四级,你放了一级的省份或者这个二级的城市过来,我也。不让你。啊。穿啊。区域字段。必须是。县级。或者是这个这个这个。香啊。乡镇。来加强这个限制啊。判断它的level,因为我们这个地址表里面是有这个存level的。是有存这个level的,一级是省嘛,二级的话就是市嘛,三级是这个县啊,四级的话是乡嘛。哎,我们存的话只能存这个最后的这个三级或者四级,因为直辖市是到这个三级嘛。啊。
40:01
接下来。哎,这个就验证完了。啊,同样的这个地址,这个详细的一个地址就不用管了,你必填就可以了,接着是电话,电话可能我们需要一些自定义的一个验证的一个规则。但是呃,手机号啊,没有必要像这么麻烦去啊这么去验证,因为这个涉及到查数据库,所以我们指定义验证规则,但手机号呢,实际上直接去写一个正则的一个验证就可以了,我们的验证规则里面是不是还有一个reg ex正则的一个验证,对吧,后面是我们的正则的一个规则啊哎。道德书写上。嗯,手机号是幺三到九啊,简单的写一写,然后是杠B-B需要这个九位吧,啊,这个是一位两位加九位11位啊这么去验证,这样就可以了,接着可以再写一个函数啊,写一个方法。把我们错误的消息给写写。
41:00
Message。就是错误的时候提示的一个消息啊。提示消息。在这里面去写啊。一个是内。Request,这个是收货人必填。啊,我们先蕊添一个数组,这个数组里面的内容。收货人必填好,接着多复制几个,然后把这些改一改啊,City。点request啊。地区。必填。地区不能为空。啊,收货人不能为空。
42:02
嗯,然后这个它下面这个不用写了,这个我们在下面已经说说出了这个消息啊,这个是地址的这个啊。这应该是详细收货地址,不能为空。啊,接下来是。手机号啊。手机号这个我们不用写也行啊,不用写呢,它会呃自动去翻译,因为我们有手机号这个字段对吧?啊,其实地址这个应该也有,但我们怎么写上了,好,这是我们的消息验证规则,接下来呢。啊,我们请求。这个地址试一试。重新生了一个talking啊,之前那个应该是过期的。我们使用这个POS的方式啊。
43:01
把这个Tony给换掉。请求的地址换一换post啊,请求这个地址是添加。我们的验证规则,你看电话不能为空,详细地址不能为空。对吧,然后foreign呢,它发它翻译的是电话啊,但你感觉应该是叫手机号比较合适的话,哎,我们就把。这个手机号的也写上啊。手机号。不能为空,接着是他的这个正则的一个验证。手机号格式不正确啊。好,接下来就是我们提交的一个参数,收货人name,哎,我们不让他为空。啊丽丽好,呃,C-ID啊C-D比如如果我们写一写北京市。
44:08
他会告诉我们必须是这个县级或乡镇是吧?哎,所以就不行,那我们去再找一个乡镇。写个55看看对不对,能不能蒙对。嗯,也不行,那我们去找一个吧。找一个三级的level等于三或者四的。往下找啊。嗯,直接倒序排序吧。那就42811啊,用这个啊。42811。
45:01
Le他的level。你这里验证有问题吗?Le。啊,不能用或。这样的过不来。这我们这个判断有问题啊。用数组来判断嘛。啊。就是我们这个乘四的level,如果既不是三也不是四的话,就不让他过啊。刚才这个货是有问题的。现在应该是没问题,这个应该就能验证过啊,就是说说过的详细的一个地址。
46:01
啊。什么什么小区啊,二楼111号。接着是手机号。现在是少一位,少一位应该是格式不正确。我们再来一位。可以了是吧,验证通过,那接着我们就把它去存入数据库啊,存入数据库呢。可以使用。模型它的create方法。啊,这个模型的create方法。批量去插入。啊,但是呃,批量去插入呢。我们需要干什么?需要给这个模型配置这个可批量插入的一个字段是不是?
47:05
这样的吗?对吧?呃,可批量赋值的一个字段啊,但是这个字段呢,有点多啊,所以我们可以反着去写,就是不可批量赋值的字段。好大这个啊,等于一个空数组,不可批量数算。哎,就是取反的一个操作,那接下来我们就可以使用卡瑞了,卡呢,嗯,因为这里面的数据都验证过了,所以这些数据都是我们需要的。啊,所以。这里我们可以写request all啊。Request。哦,但是request,哦,它里面少了什么呢?是不是少了这个优侧杠ID user-ID也是我们需要的呢?对不对。来,所以我们干什么给request追加一个user-ID啊,Request set user-ID等于奥里面的API。
48:07
里面的这个ID。好,这是个方法,哎,这样就能创建成功,添加成功之后一个添加成功的一个响应。Response。一个创建成功的一个响应,这样就完成添加,其实我们在数据验证做好之后,添加到数据库里面,还是呃比较好写的。来。我们来测试一下啊。诶一个201,然后看一看数据库。找到。刷新一下才有这个表啊,这个表是我们后来新迁移的吗。是不是有条记录,包括这个UID都是给我们维持上的啊,这样添加就写完了。
我来说两句