00:01
接下来继续完成我们的商品管理的功能。在写这个功能之前,我们要先创建商品的数据表。啊,创建数据表呢,我们统一使用啊,数据迁移不会去手动去创建这个表。首先执行命令。PP。Make,你创建迁移使用这个M对吧。但是migration呢?你这样创建的话。啊,只会给你生成一个迁移的这个啊文件,你还要手动去创建其他的。啊,文件其他的类,所以我们使用什么使用make。啊,Model啊,创建模型,创建这个商品的模型,创建模型的同时加上杠M参数,它会给我们生成这个嵌文件,如果加上这个杠C,它会再给我们生成控制器,对吧,但是控制器我们就不创建了,然后控制器我们手动创建,并且还要指定它的一个目录啊,这里我们只是创建模型的同时生成迁移。
01:01
接下来回撤。模型创建成功,迁移文件创建成功啊。好,它没有自动结束,我们CRC把它结束掉。接下来这里就会有一个迁移文件,看到了吧,模型里面也会有一个。模型文件。接下来去改我们的签文件,去把我们的商品的表的字段给完善啊,首先商品有这个ID,还有这个更新时间和啊这个。添加时间啊,这个我们就保留啊,继续写其他的字段,比如说。能写一个int类型的啊int类型。UID。这个我们认为是创建者啊,就是谁创建了这个商品,然后接下来。啊,复制一下,多复制几个去。完善我们其他的一个字段,好,嗯,商品呢,那既然有。这个创建者啊,也有一个这个分类对吧,商品所属于哪个分类,之前我们也写过分类的功能,分类的ID,我们也用这个类型,但是这个字段换一换。
02:09
Great ID啊,分类好。接下来看看上面还有什么商品,还有一个简短的一个描述,描述的话呢,因为就一两句话,所以啊,我们用what类型,也就string型就可以了啊。这里。第四,Crap描述。好。接下来继续创建它的字段,商品的一个价格,价格我们用啊硬。价格。然后是库存。啊,库存也用int类型。啊,套库存。继续往下创建。啊,封面图。
03:00
封面图,封面图呢,封面图它一般就是我们存一个图片的一个地址啊,所以它的内容还是比较短的啊,所以用这个train就可以了。啊,然后答的这个单词。Cover。好,接下来再创建一个什么,就是我们在看商品详情的时候,一般它的这个大图下面有时候会有一些小图对吧,就左侧会有一排的小图,对不对啊,小图集啊。小组的一个集合,哎,这个我们叫PI类型呢。呃,你存字符串也可以啊,存字符串你就要用这个分隔符,把这个一个个图片进行分格是不是啊,当然我们买so后七以上支持的这个杰森嘛,我们可以直接存杰森,存杰森的话呢,就可以把这个图片啊,就是我们处理成一个一个数组,然后直接往这个数据库里面去存就可以了啊level呢,就是不管在我们存的时候还是去查的时候,我们可以在模型里面设置这个Jason和我们love的,就和我们PK的这个数据类型的一个转换一个格式,比如Jason转数组啊,转对象啊都可以。
04:08
就是嘛,所以说我们用杰森。啊,一个小图集。好。啊,接下来。啊,有一个是否上架商品可以上架下架,因为商品一般不去删除对吧,因为有人可能是买了这个商品有相关的订单,所以商品我们一般不用的就下架就可以。是否上架啊,零不上架,一上架啊,默认我们是零不上架,就是刚创建完商品的时候,我们不让他上架,等你确定好你的商品没有什么问题了,你再手动去上架啊,DEFAULT0不上架。好,当然类型的话使用ten就可以了。嗯,接着再写一个啊是否啊显示到推荐位。And recall。问,啊,好。是否推荐啊,因为我们推荐的商品的话,就可以让它显示在啊首页啊,或者其他地方的一个广告位,推荐位啊,当然这是我们啊学习的一个项目,如果真正的商业项目的话,关于推荐这一块,它是很复杂的啊,一套流程啊,会涉及很多表啊,比如推荐的位置啊,推荐的这个。
05:16
啊,这个时间是吧,然后包括推荐的这个其他相关的一些。啊,信息。啊,都是比较复杂的一个系统啊。那这里我们就简单的写一个字段,写一写就可以了。零,不推荐。不推荐一啊推荐哈。默认呢,也给零不推荐。Default,零。类型的话也是tiny就可以了。接下来再接着创建其他的一个字段啊。比如说这个啊,我们只有一个商品的一个描述,是不是缺一个什么,缺一个商品的一个详情,详情就是我们在看商品的详情的时候,下面很长很长的一个内容,听楚吧。
06:03
这个它一般是一个啊,Text类型的一个字段,就是我支持副文本,我们可以随意的去编辑这个上面的信息详情,这样是比较简单的。好,详情。这样我们的商品就创建完成了,大概就这些字段啊,如果还缺什么字段,我等我们用到的时候,我们再啊去进行补充可以吧,然后暂时我们就想到这么多字段,那我们的表结构创建好之后呢啊就可以去。执行我们的迁移,生成我们的表,也是在虚拟机里面我们的项目目录下运行迁移,P p artisan。M啊。执行完迁移之后啊,就会给我们生成一个商品的这个表。看到了吧,字段就是我们创建的字段,有这个表之后我们就可以去写。
07:01
商品的添加功能。对吧,先写添加啊,你没有没有数据的话,你列表什么的,你都不好看到效果啊,所以我们写完添加就可以去写这个商品的列表。那接下来。创建一个商品的控制器,去写商品相关的一些功能,PP art make controller。啊,创建一个创建到这个下啊故事。Controller对吧?嗯,也可以加上这个杠。啊,看API生成我们的API的一个资源控制器。等一下啊,杠杠一篇。好。这样的话就会给我们生成一个啊。控制器,在这个APP control下那个商品的控制器,因为我们家的杠杆API,它给我们生成了,就是说API这个资源控制器,所以是。
08:03
啊,一些常用的方法就给我们列举好了,我们来看一看都要用到什么方法。啊。商品的这个列表对不对,我们把注释同时给改了商品列表。好是用得着的,添加肯定用得着,对吧,添加商品。嗯,详情也用得着,我们有时候添加完商品可以去预览一下,看一下详情是不是。详情。呃,更新商品那肯定用得着啊。删除啊,删除我们就不要了。好,当然我们用得着这四个方法啊,当然还会有其他的一些方法,比如说啊,是否上架是不是。意思啊是吧。先把我们需要的控制器给准备好,是否上架啊,当然你也可以每写到一个功能去啊去啊,整一个控制器也行啊。
09:04
看个人习惯。再一个是我推荐是不是。是否推荐?好,那。控制器的方法整完了之后呢,就可以去写我们的路由啊,还是那句话,你可以一个一个的去写,不用像我这样一次性把所有的都先给整理好啊,看个人的一个习惯啊,接着去找到我们的路由文件啊,这里先折叠起来。路由写在A的in里面啊,接下来。我们再建一个分组啊。我我说的分组的意思不是路由的分组,是我们这个分就是注释的一个分组,你尽可能的把你相关的一类的这个这个路由都写到一起啊,大的这个分就是说分类,你可以用这种注释,然后小的可以用一行一行的这种注释。知道吧,这样你找路由你找起来会非常的方便。这个是我们商品管理啊,商品管理,然后把商品管理相关的路由写到这里,对不对,首先啊,肯定有一个资源路由啊,我就直接复制这个也是。
10:08
我们排除掉这个删除的方法啊,但是空制器改一改啊OD啊。好,其他的就不用改了,其他都一样,把这个名字改了。啊子商品。商品管理资源路由啊,接下来去补充我们那个是否上架,还有是否推荐的两个路由,对吧,我们扩充的额外的路由要写到。这个资源路由上面啊,就是防止为了啊资源路由对我们写的路由进行一些啊覆盖,就是万一我们路由名相同了,有可能产生一个覆盖。啊,这个都在拉,我手册上都有说明。好。接下来写一写啊,是否上架。还有一个是是否推荐啊,写两个单个的一个路由啊。单个路由呢,也直接去复制它就可以了,把这个啊都改一改,名字改一改。
11:06
啊。然后是is on方法。接着写我们的是否推荐啊。复制一下这一行就可以了。是否推荐?啊。就换个这个这个路由啊,不一样就可以了,前面都可以。这个方法换一换啊叶子。这样我们的相关的路由就准备好了啊,控制器也都有,就可以去写我们的功能了,先写什么功能,先写商品的这个添加。添加商品。我们先。干什么,先就是说去测试一下这个路由能不能能不能请求通啊,先一个啊一啊随便一个东西,然后在这个里面去测试一下啊,能不能请求到。
12:07
嗯。因为。我们这些都是写到需要登录的,这里面的是不是你看都是需要登录的啊,所以我们得先去执行一个登录才可以。对吧,但是。登录呢,我们这个talking啊,我们设置的这个有效期是3600秒一小时,有点短,所以每次会过期,所以我们把它改大一点。具体需要多长时间,到时候根据你的这个实际的这个项目上线的时候你来决定啊,一般像啊就是说APP使用啊,可以适当的给长一点十天20天都可以,但是像这个比如说外部网站使用的话,一般给个啊两个小时。就可以了。来这里为了测试,我们先把它时间改长一点。使用的是GWT投屏,所以要改这个投屏的过期时间,要找到啊GWT的一个配置文件。找到config,找到吉拉T。
13:02
然后他有一个。搜索TTL啊。好,这有一个过期时间对吧。好,那我们去E里面去,呃,加上这个选项,然后把时间调大一点,这里有说明,它默认呢是一小时,然后但是它的单位是分钟,也就这个是分钟。找到。EV啊,我们找到GWT的配置这一块。往下找。继续往下。好,我们就放到这里吧。等于它默认是60,我们给它加100倍啊,就是100小时,它默认是小时嘛,好。这里改完之后呢,嗯,因为我们登录的时候,它会显示一个时间的一个。这个过期时间是多少秒啊?这里我们要去改一下,找到控制器。APP。Http controller。里面找到登录。
14:01
找到最后这一个过期时间,我们让就是返回的这个过期时间显示这个结果也同样去啊增加100倍,哎,这样配置。哎,就是我们的配置和我们显示时间。就一致了。接下来去。找到登录去生成一个talking啊。直接登录就行了,我们因为之前在这儿保存了之后啊,我们的参数都是在的啊,我们的参数都是在的。好,登录之后,这是我们的过去实验,就长了一些了。来,这个题可以关掉了。啊,再新建一个啊,请求我们的域名API test,然后加上API前缀,接着加上格德in前缀,对不对,然后是我们的。商品啊故事,那我们要测测的是什么呢?测的是添加的方法,添加的它是什么?POS方式是不是。所以用这个啊,参数我们可以先不传。然后去提交。
15:02
没有传那个talking啊,把talking给选上。同时把这个值我们给更新一下。一可以正常请领导是吧,那接下来可以去写我们商品的一个添加的一个功能。啊,商品呢,我们来看一下它这个表字段还是比较多的。看一下表字段呢,还是比较多的,这样的话呢,我们就啊。要去单独的去写一个表单验证的一个文件,就不能在这里做简单的一个验证了,清楚吧,如果只有一两个字段,我们可以在这里做一个简单验证就可以。那接下来去创建啊,商品的这个表单验证啊。Make request啊?看一下我们的表单验证用不用去进行分组。啊,也进行了分组啊,那我们建一个这个。我的面啊。额的冥想。
16:02
God啊,S request。好,就是我们在这个目录下啊,我们的表单验证也做一下分组啊,因为你前台验证的字段,可能有时候后端验证字段都不一样啊,创建一个表单验证文件回撤。这里啊,那么这里就会多一个。这个文件夹啊,多一个这个文件夹,同时会多一个这个表单验证的一个文件,看一下啊,是不是有了。好。那接下来去这里面写我们的验证的规则。啊,这个地方我们不用每次都去改,在你新创建完表单文件之后,把这个删掉就可以了,删了干什么呢?不继承form request,继承我们的basic request。这个我们之前都做好了处理了,是不是base request,因为我们在base request里面继承了form request,并且把它设成除你就不用每个区域设置它了。是不是好,接下来写我们的验证规则。验证规则。
17:08
来写一下啊。那肯定要是对这个字段一个一个的进行验证了。是不是?首先验证UID啊。必填啊行,我们先把这个复制一下啊,因为基本上很多字段我们都是必填的,叫什么先复制几个接着去再。改字料名和加其他的一些验证啊,写代码一定要就是。讲一下效率要快一点,比如说这个分类啊,分类我们也不填就可以了,知道吧,还有像这个描述描述。呃,也是必填,必填的话呢。
18:00
同时因为我们这个是什么呢?用的是string,就是类挖叉类型对吧,我们限定下它的长度啊max你不能超过22255个字符行吗?好,接下来是我们的一个价格啊价格。啊,价格呢,一个是。必填再一个,你最小值得是零吧,你不可能给我来个负的吧,是不是啊,最大值我就不给你做限制了啊。啊,然后是库存。库存。啊,同样它跟这个啊价格啊很类似啊,一个是必填一个是。你的最小值,我要给你做一下限制封面图。这个封面图必填就可以了。小图。小图啊小图我要要限制一下它的这个类型啊。
19:03
就是。数组类型吧。啊,数组类型啊。接着看其他字段。啊,Is on,这个因为我们给了默认值,所以你。啊,提不交都行,还有这个也提不交都行,那就无所谓了,不用管了,这是我们的详情,详情也是在必填啊。一块的就可以了,好。行,这样我们表单验证就创建好了,然后在这个。这里面去用上就可以了,使用我们的。Good request,好。这时候我们在请求这里就会经过它的一个验证,如果验证不通过啊,就是我们的这些验证不通过,它就会直接返回,从而去保护我们的一个数据来测试一下。看一下是不是啊,这些都不能为空对吧。不能为空。
20:01
当然。因为这些。就是在我们的翻译文件里面,它没有这些单词的一个翻译,所以他把这个。英文的直接就显示出来了。就什么?当然如果你想对这个表单验证的这个消息做一些重写的话,是可以在这个下面去写一个message方法就对他的某,就是说每一个验证去。进行一个重写。行吧,好,这里我们就补充写了啊,直接展示给使用的这个人去看这个字段名也可以啊,他就知道什么不能为空。接下来继续完成啊,商品添加的功能。但我们把这个验证写好之后,其实商品的添加就比较简单了,只需要把所有提交过来的数据,我们进行一个批量的一个赋值就可以了,对吧。啊,可以直接使用。啊,商品的这个模型。然后。Request。
21:01
哦啊。所有的这个提交。就是使用可进行创建啊,这样商品就添加完成了啊,但是。你要想使用这个批量赋值啊,你要必须在在这个商品的这个模型里面去添加可批量赋值的一个字段才行。接下来我们找到这个模型。在model里面。给它加一个可以批量复制的字段啊。可批量复制的字段啊,Lo do等于。啊,这个我们要一个一个的去。写上可以批量赋值的这个字段。ID是自动生成的ID我们不用管啊,主要写的就是啊,其他的一些字段。
22:10
这里我先多准备几个这个。然后把这个子弹给粘上就可以了。到哪里了?Cover。Pictures。Is on。这样。这些字段可以批量赋值啊,这样的话你就可以使用。这个create去创建啊,创建完成之后呢。
23:01
啊,This this里面的response可以发现,就这里提醒并没有response是吧,是因为我们如果你要使用。这个啊,订购API的这个响应生成剂,我们必须得引入它的哈,对吧,所以这里继承我们的贝斯。啊,我们在base里面是不是引入了这个API help。好,这个时候就可以使用response啊,添加的话,我们给一个的一个响应就可以了。好,这两天就完成了,接下来我们进行测试啊,测试的时候呢,你会发现。啊,这些字段啊,都是比较简单的。清楚吧,你只要填入电路值就可以,难在难在哪,难在这个啊,测试的时候我们这个数组怎么处理。就是我们这个小图的数组怎么处理,我们来一起看一下啊。这个是我们的添加的这个接口。啊,接下来我们把这个数据。给填充上啊,放到这个form data里面或者这里面啊,如果这里面你呃提交提交不过去还一直报,就是说告诉你字段缺失的话,那你就用这个啊。
24:10
因为我用的时候,有时候也发现了这个有时候它不能用,嗯。好,那我们就用这个啊。依次去协商。我们的这个字段。所以说啊,写API呢,它是比我们写之前的那个页面。啊,要省事一些,就省去了这个斜面的时间,但是我们在对其这个API进行测试的时候,也。就说需要咱们有耐心的一个一个的去测试啊。好。User ID。我们用用户一。其实这个UID啊,我们不用传也行,我们创建者一般是当前的这个,当前的登录的这个人。对不对啊,所以这个不用传啊,这个不用传,那既然不用传的话呢,我们就把这个表单验证里面这个UID给删掉就是吧。
25:02
好,这个就不要了啊。我们就填这个分类的这个ID啊。分类的这个ID。找一下分类,看看都有什么。分类呢?啊,其实我们应该做一个限制,就是说你只能选择三级分类去添加,就不能选择这个二级或者这个一级的分类去添加,就只能选择level是三的。清楚吗?啊。只能选择一个level是三的啊啊,当然可以在添加里面啊,这里去啊写一些限制。好,我们先手动去写,并且你不能使用这种啊,已经禁用的这种分类,其实上已经禁用的分类的话,在我们添加商品的时候就呃不应该显示出来,明白吗。接着我们就使用这个吧,七。
26:04
啊,七添加一个电脑。描述。这是一个电脑。就是很强子的啊,价格。我们先把字段都写上,先把字段都写上之后再去填它的值也行啊。因为这些都是必填的,所以我们只需要传这些字段就可以啊,像他那些有默认值的我们就不用管了先。就这些是吧,完了接着填价格。啊。5000。库存。999。封面图,封面图我们一般就是存图片的一个地址啊。
27:02
而且存图片的地址呢,也不会去存这个带域名这种绝对地址,万一天哪一天你换域名了怎么办,对吧,所以我们班存这个U,比如这个image在下面的啊。啊,你买几啊一点偏近我们假假如啊,就是这么一个格式啊,当然这个这个是要存一个数组,数组这个怎么写呢。来先先把这个细节给写完,这个详情给写完啊。这是一个电脑啊,这个详情我们写写多一点啊。数组我们怎么写你你还是这样去写吗?啊,咱可以试一下看行不行啊,就按照这种格式去写。L3A点偏近。B点偏近。C点偏近,好,你来试试啊。是吧,它比如数你这么写肯定不行,这么写你就当字符串给给解释过去了。对吧,所以你要想碰到这种数组的类型就比较麻烦了,用这个工具啊,当然比较简单,等会给大家说一下啊,这只是我们测试的时候是这样,你其实真正在这个接口给别人使用的时候,别人。
28:09
是不会出现这问题的,别人不管是用R贾也好,或者用那个fe啊,或者那个SX,他都可以去提交这个数组的,就什么。以前在写页面的时候,我们PP如果提交啊,这个数组是怎么提交的,就在表单中,那什么是一个数字的情况,比如这个多选check box是不是数的一个情况,那时候我们怎么提交的,是不是给这个名字加一个这个中括号,他在提交的时候就会成为一个数组。对不对,A点平,然后当然如果有其他的一个啊,数组的一个元素,我们继续写啊,还是中括号啊,B点平移是这样的。啊,当然这个顺序的话,我们可以去。调调它的这个顺序啊。对吧,这样是不是就提交一个数组过去了。好,我来验证一下啊,真的。
29:00
好,这个时候。开始就给我们。报错了啊,这个数组我们是调过去了,但是现在是数组转字符串。失败明白了吗?啊。也就是说它在进行添加的时候。因为我们传过去的啊,是一个数组啊,我们数据库,数据库呢,我们这个是一个阶层的一个类型啊,看一看这个商品表。啊,这是未类型啊,所以它在转换的时候呢啊。没有自动转换成功。这时候我们要去修改这个模型啊。就是去修改我们字段的转换的一个规则。来看一下手册。啊,手册在修改器里面啊。里面有个属性类型的转换啊,就是它可以。设置完这个属性之后啊,我们给模型设完使用,它可以让我们的一个字段去在我们存储和使用的时候,转化成对应的一个数据的一个类型。
30:03
它提供了这么多类型的一个转换。是吧,啊,当然我们也可以啊,自己去定义这个定义转化我们用这个属性就可以啊,用这个属性。啊,把我们的什么字段呢。把pictures。转成啊数组。哎,把我们P的属性转成速度,接下来我们再进行一下尝试。不会报刚才的错误了是吧,但是现在是一个新的一个错误是。啊,没有用户user ID,我们user ID数据库里面也是必填的,对不对,但我们表单提交过来,并没有去传这个用户的ID啊,之前我们说过我们用户的ID可以从当前啊登录的这个里面去获取,对吧?UID等于also。啊,This also也行啊,我们直接用also辅助函数吧,API啊,选择API看手机可以直接使用这个ID啊,获取到这个用户的ID,我们来返回一下,看看拿的是不是啊。
31:07
好,因为我们在请求的时候是传了这个talking过去的,所以啊,它是可以从这个talking里面去解析出来这个用户的这个ID的,清楚吧,所以我们直接使用also这个辅助函数是可以拿到我们就是说这个用户的当前登录用户的一个ID情况。对吧,接着我们拿到ID之后,就想办法把ID一个字段附加到这里面就可以了,清楚吧。啊,当然啊,我们有很多方式,比如说我们可以定一个定一个这个in insert date是不是,哎,我们让这个insert date等于它是不是,然后我们再给in色的data里面去加这个U色杠ID。清楚吧,等于这个dota u ID最后插入这个银色的贝塔。是不是也行,这是一种方式是不是啊,当然还有一种什么方式,我们还是直接去使用request,然后。啊。行吧,就这么用吧,我的意思还是说还是可以直接使用这个request,但是在使用request or之前,我们可以为这个request去啊追加一个啊,使用它的off去追加啊这个键和值。
32:13
是什么?那追加谁呢?追加就是杠ID。然后。值就是我们的ucd啊,这种方式也可以。听到没有,我把这个给你给你放这儿啊。第一种方法给你放这啊。啊,注释写一写啊追加。啊,User-ID字段。行吧,啊,这个复制一下,我放在下面啊,这是一种方式啊。比较简单的方式,这也是一种使用这个request ofet方法去啊,追加我们的这个值,来看一下结果可不可以。哎,是不是返回了201卡啊,创建成功,我们去刷新一下商品表。找一下来找一下我们的这个商品嘛,打开,然后把这个关掉,是不是有条数据啊,是不是你的添加没问题。
我来说两句