00:01
继续完成订单的一个管理。首先。创建订单的啊模型,同时生成牵引文件。杠M。接下来去写订单的一个表字段。有一个int类型的啊,U-ID也就是谁下单的。下单的用户。啊,接着我们。
01:02
多复制几个,把它的字段都见一见。啊,再多来几个。订单的字段比较多啊,我这里提前准备好了,我就。嗯,快速的写一写。来,我们放这。有一个啊单号。啊,这个一般用字符串就可以啊,就是你生成的你的这个订单的一个单号。这个规则你自己去。定义啊,等号啊。订单单号。啊。接下来呢?啊,有一个金额。金额我们用整形啊,金额整形。嗯,单位是分。
02:00
因为我们在处理这个钱的时候,整形是比较好处理的啊。是这个订单的啊,总金额要支付的这个金额。总金额单位分啊。好。整形。啊,接着有一个状态啊。状态。我们用。啊太就可以了,就是订单的一个。状态。有这四个状态,退货退款什么的,这个我们就不写了。简单的写一写这个啊,就是下单支付以及发货收货的这样简单的一个流程。订单状态啊,这个可以给一个默认值,默认值的话,你新创建肯定就是下单是不是。发零。啊,一一是下单。
03:00
接着写啊。收货的一个地址。也是用ten,而我们现在没有地址表,等我们在啊,因为我们地址是前台用户去添加的啊,等我们写到前台的功能的时候,再去创建地址表,然后同时呃把后后端。就是我们要优化的一些功能也给优化一下啊,就后台相应的就是差的就会给补上啊。收货地址。啊,存的是一个ID啊,地址表的一个ID。答案先知道可以了。接着是我们这个快递啊,快递的一个类型。把这个改成ten。改成字符串吧。啊,因为。它是这种类型啊。快递的类型啊,是各家快递公司的一个缩写。
04:05
接着去。啊,建一个我们快递的一个单号啊。快递的一个单号。这个用春字符串啊,因为有的这个快递公司他们的单号可能包含英文。啊,包含单词。快递单号。啊,这个单号一般是我们把货物交给快递公司之后,他们发货之后会给我们反馈一个单号,啊,是这个单号。啊,不要搞搞混了,嗯。接着是我们的这个啊,Paytime支付时间啊,支付时间它应该是可以为空的啊,应该是可以为空的,一开始没有支付嘛,所以他啊允许他为空。时间类型。啊。这里啊,时间类型,我们用这个time time啊。Time。你不要加这个S啊,S它会生成create和update啊,我们是一个字段就用啊temp。
05:04
支付的一个时间。好。接着是一个支付的一个类型。啊,支付的类型,你看看你想用什么类型吧,用我们的这个t it对吧,用一二表示也行啊用。我们的单词表示也可以。好吧。啊,那比如这里我们用。Stream。支付类型啊,这个也可以为空,为什么可以为空,一开始用户没有支付呢,你就没有支付类型。对不对啊,也是那那个允许为空。支付类型,我们如果用字符串的话,你就可以写这个。这个汉字了啊。支付宝。微信。因为就这两个类型,而且也不和呃这个其他的表做关联,所以我们直接这里去用中文,没有没有什么问题的。
06:01
啊,接下来。还有一个啊。这个我们也用字符串。交易的一个单号啊,这个单号是。是我们和支付宝,就是支付宝或者微信,我们支付完他们的这个支付的一个单号啊,这个叫支付单号,上面这个是我们订单的单号,清楚吧。啊,这个是支付单号。啊,因为后续比如说我们的退款什么的,其实都是根据你支付的这个支付单号去进行退款的。知道吗?而这个我们本系统的订单的一个单号,一般是我们去查询订单去使用的。啊,这个一定要区别开,这个也用字符串啊。啊,这样的话。我们这个订单表差不多就啊完事了,就这些字段。啊,如果后续我们写代码发现再漏掉什么资料,我们再进行补。这是订单表啊,但是我们想象一个场景,我们一般我们去下单,我们去结单的时候,对吧,我们是不只只是一个商品对不对,数量也不一样。
07:07
对不对?你看我们购物车有时候加了五六个商品,而且每个数量还不一样,然后去点结算是吧,这是生成一个订单,然后去支付的,但是这个订单里面包含了很多的商品,所以我们还需要一个。啊,总表。啊去。记录啊,这个订单包含的所有的商品的一些信息。清楚吗?好。那。这个从表呢。我们也把字段写出来的比较少啊,但是我们先建它,先建立它的一个模型啊,和数据数据一个一个迁移好吧。皮皮,Art make。Model啊,创建一个order啊,这种创建模型的时候用驼峰命名啊,大驼峰命名,然后加个杠M生成迁移。它在生成迁移的时候,会自动给我们拆解开,你发现没有,看到没有。
08:04
啊,所以说你在创建的时候,用这种驼峰命名。啊,这几个字段。多了一个牵右念是不是啊,因为我们是创建模型同时中迁移,所以模型里面肯定是有的啊,肯定是有这两个模型的order order啊。来,接着去。补充。啊,这两个可以留着你也可以啊,不留都可以啊。Int啊,它主要是一个起到一个关联表的一个作用。Command。比如有一个order-ID。所属订单。好,还有什么呢?杠ID啊。
09:00
所属商品所关联的一个商品。然后有一个啊,CERCE就是你商品的一个价格,商品的价格。啊,这个不知道大家有没有疑问,为什么我这边要定一个商品的价格。啊,你们可能会有疑问,那我直接去商品里面去查,它的价格不一样吗。我告诉你不要这么设计啊。我们订单订单所有的这个一切,一切以用户去结算的时候,那一刻的状态为为标准啊,为记录,你不可能说用户买的时候是100,然后后来因为你商品涨价了,你的价格就变成一百二了。啊,不是这样的啊,就所有订单相关的数据都是以用户结单。啊的时候为准,你像比如说淘宝京东他们还会做的更严谨一些,甚至在你交易完成之后,还会给你生成一个快照啊,就连你购买的时候,那个商品的时候,那就是购买什么时候购买的那个商品,当时那个商品的一个宣传的一个详情,都给你生成的快照,就以免你你后面产生纠纷啊,给你提供一个依据对吧,所以这个价格我们是要记录一下的啊,包括你下单的一个数量啊。
10:07
商品的一个数量啊,这样的一个简单的一个关联表,我们的订单就算啊,基本上完善了。好。接下来啊,执行迁移去。生成我们的相关的数据表,把这个CTRLC结束掉,有时候它执行完他没有自己结束啊。Art。Migrita。啊,生成了这两个表,嗯,接下来呢。呃,就是说写代码呀,你看你怎么写都行,你先去处理这个控制器,然后或者说先去处理路由啊,先去处理这个模型都可以吧,都是少不了的,你先进行哪一步都行啊,我们先把控制器给创建了吧。对吧。P artisan。Make controller。
11:01
创建在我的下面。CR了啊,我们就不创建资源的了,也用不着。好。然后那个订单的这个关联表就不创建了,其实我们操作订单只要在这个控制里面就可以,关联表只要是用到数据的时候,可能会用到关联数据。啊,空气唱完之后。干什么?对吧,这个迁移文件可以不看了,这就可以关掉了。接着去捋我们的控制器啊,看看我们要写的一个功能。Order。订单列表是吧。啊。接着复制一下啊。
12:03
订单的一个详情。啊,我们也用修方法吧。然后。订单列表、订单详情。嗯,还有什么呢。啊,发货。看看我们这个状态吧,因为我们这些状态都要去对应的功能去操作它的。给贝斯。找找订单这里啊,看看订单的一个状态。首先这个下单啊,支付啊,收货确认收货啊,这些都是用户就是前台那边操作的,我们真是后台管理,只需要。就是写给发货就可以了。是不是?啊。
13:01
应该是就这三个功能啊。改成post啊,已投递。来对应这三个功能,我们把这个路由也写上。先先写这三个功能漏,漏掉了再补吗?订单管理。直接复制这个改一改就可以。方法都差不多。index秀。Post。控制器改了,改成order。这个改了好的。好的。他。好,这样就改完了啊,路由也就写完了啊,接下来干什么呢。
14:02
就可以开始去写列表了。啊,同样的,我们没有这个。数据没有写添加嘛,因为添加是前台生成的,所以去手动去加一些数据找到表。刷新一下就会出来订单。以及订单的这个详情啊。加一条订单IDE啊。哦,这个是订单的详情,我们先不管,我们先去添加订单。先添加订单,再添加详情啊一。UID。单号。随便生成一个,你自己写规则去生成,不要重复就可以了,价格100。状态是一啊是这个。刚下单。地址我随便写个一吧,因为现在。我没有地址表。啊,类型。
15:01
写个顺丰,然后就说快递的类型,快递的单号。好,随便写个啊。支付时间没支付呢,没有啊,支付类型这些都没有啊。啊,这个时间。就是说创建时间写一下。行,这样一条数据我们就加好了。嗯,接着呢,去加一下订单的详情啊,订单的详情就比较好加一个是ID,一个订单的ID,订单ID我没有一。好商品的ID,我们用第一个商品,然后价格用。啊50啊,数量用一啊,那我们这里是总价是100是吧,我们可以在。再加一条商品啊,再复制一条商品。是。复制第一个,粘到第二个,把ID改一改。订单ID还是第一个,然后商品ID第二个也是50啊。这样也可以了,也就是我们这个订单两个商品嘛,嗯。
16:04
其他的数据我就不加了,你们测试的话就。可以多加一些好。嗯,支付时间我也给写上吧,包括支付的类型。比如说微信啊,因为我们要写的功能是一个发货,所以把这个支付时间给写上吧,比如他们的一个微信的一个支付的一个单号。啊,随便写吧,写长一点。这样我们就是说去写这个发货就可以了。那状态要改一改。找到订单的状态,状态就不是一了,一是下单,二是支付啊,三是发货啊,你们现在应该是二,就是说已经支付的一个状态更新一下啊。这样我们模拟数据有了,来写,开始写订单的一个列表。啊。同样的啊,我们我就不讲那么细了,就不会再从头来由这个简单的到复杂的,我就直接写了继承基本控制器。
17:04
对不对。啊,然后它会包含一些搜索条件,把这个request给引进来。查询啊,所有的这个订单。Order model。啊,进行这个分页。这个分页就无所谓了,我们一共就一条数据啊,写写写写不写这个数量都可都可以啊,最后。Return啊。Response。返回一个分页的一个啊,响应生成器啊,把我们的order这个给传进来,传进来呢,你需要一个order的一个,就是订单的一个transform对吧,那我们复制一个。改一改。师父母复制。复制谁的呢?复制用户的吧,用户的比较好改。
18:04
Order。Transform。这个其他的我就这两个时间我就不管了,主要处理中间的这个内容。你这个处理呢。啊,还是得看着这个这个来处理啊,所以我先复制一下放到这上面啊,方便我去粘贴。好。来一个来处理单号,我们肯定要返回是不是。先把这个变量给改了,先把模型给改了,改成order,你这是order的这个。Order的这个form吗?啊,这些细节不能忘,接着啊,我们的单号。单号。好,这个就不要了。从这。多复制几个啊,多复制几个呢,开始去写我们要返回的一个内容。
19:04
有此ID。金额。状态。地址。嗯,快递的一个类型。快递单号。啊,支付的时间。支付的类型。交易站单号。嗯。这就可以了。啊。这个就删了。Transform写好之后呢,就在这里就可以用了,用order transform这样我们的分页。啊,列表就写好了。来测试一下。新建一个啊,新建一个这个。Get方式请求api.test我们的域名,然后是API前缀和doin前缀里面的or orders。
20:06
把认证选上。We are talking。发送。啊。Talking过期啊?你生成一个。嗯。复制一下啊。然后在这里,这是我们的订单列表,对吧,我把所有的其他的标签都关掉。Are?把他换一换。接着发送。是不是拿到我们的订单列表是吧?带分页的,你看它底下的分页信息呢?啊,这样我们就简单的一个列表就写完了。接着呢,处理我们的查询条件啊。好。查询条件。想一想,我们一般订单都有什么查询条件,通过这个?这个这个什么呢?单号查询对不对,通过这个东西查询。
21:04
然后。从request里面去取。传入的这个啊。接着。还能通过什么去查询呢?还能还得能通过商家的,就是微信或者支付宝的这个单号去搜索。啊,交易的单号去搜索。比如有时候客户订单有问题了,你可以让他提供他的这个支付宝的这个。就说。或者微信的一个支付的一个单号啊,接着看看还要还可以通过什么搜索。其他的。后续用到再加吧,是吧。再加一个状态吧,啊就是说。已经这个下单的呀,已经支付的呀,或者已经发货的呀,是不是啊,再加个状态,就这么多查询条件,然后都是唯一的一个条件啊。
22:06
也不是说唯一的就是说都是这个比较简单的条件,所以直接写这个温就可以了。当条件存在的时候。不是凹,是凹刚弄。必包。啊,然后是柚子。这里面是查询构造器的这个query。嗯,把它往前来一点看一下。也就是说当你单号存在,我就按这个单号给你进行搜索啊。
23:02
我单号等于你要搜索的这个单号。其他的条件都一样啊,都一样,所以这个是。啊,比较好写的这个数字。来,接下来就是。慢慢的改吧。改这个状态。啊,这样搜索就写完了啊,包括这个分页,我们来看一下。比如说我搜索这个单号的,加上一个杠。Number。是不是可以查找对吧,如果我条件不对的话,就查不着嘛。有空没有数据。啊,搜索是可以啊好使的,接下来呢。我们去处理订单啊,关联的一个数据。看一看字段,你就知道它都有什么关联数据了,有用户是不是?
24:04
啊,还有这个。啊,我们的订单的一个详情。对吧,订单的一个详情。然后。当然还会有地址,我们现在没有地址表,先先不做处理。大概就这几个啊,还有呃,它呢,它是有所关联的一个商品。清楚吧,所以这两个模型他们的这个关联的一个数据,我们要去写一下,先看订单的主表。来找到模型。找到order订单主表。写写他的这个关联数据。他首先有一个user订单所属的用户,哪个用户下单的。所属用户。
25:00
啊,所属呢,就使用。啊兔啊。然后是优色的这个类名。接着是关联的键,右侧杠ID,因为我们用的都是标准的,这个关联键就是默认的一个约束,其实不写都可以啊,不写都可以。但是。马上给他写上吧。啊,用户的关联写好了是吧。那接下来。它还有什么呢?说。说订单啊。拥有的这个订单详情啊。拥有的这个订单细节吧。就是我们的这个啊。Details啊,这个。Order。
26:00
Detail detail。他呢,他跟他是一个has many的关系,一个订单有多个啊,这个details一个细节。所以说是has many。类名换一换,换成order。Details。这个关联的键就变了,关联的键是al-ID也就是说它里面的这个al-ID和本表的这个ID啊,是作为一个。就是说外界的一个关联,外界。商,呃,这两个就写完了,看看还有什么。没了是吧,如果不写地址的话,其实呃,暂时这两个就就够了啊,先写这两个吧,好吧。来接着复制一下啊,复制一下去改一下我们的。细节啊,订单的这个细节表。细节呢,你看他的。这个字段它有两个关联,就是说这个细节是属于哪个订单和属于哪个。
27:02
商品是不是?好。我们把它改一改啊。Order。所属订单主表。就是我们这个细节,我们称为细节吧,所属的一个订单的一个主表。它是也是比张的图啊,但是这个是order。啊,关联的键是al-ID就是外键啊。然后有细节所。嗯。所关联的一个商品。啊,这个应该是一个。一对一的一个关系啊,所关联的一个商品。
28:01
裤子啊。它跟这个商品什么关系呢。啊,应该是一个has的一个关系啊,Has湾的一个关系,比如我们这个细节,它对应的是一条,就是它有一条这个具体到的一个商品,具体的一个商品清楚吧,所以这里应该是一个孩子玩的一个。哪一个?关系,然后这里是商品。模型的一个。这个类名。啊,关联的是建设骨ID。和商品表里面的ID,这样我们就写完了啊。啊,写完了。好。那接下来去。使用对不对,去改我们的transform。找到order transform。接下来你想要啊,对外提供额外的一些数据,是不是要定义一个。
29:05
然后。啊,这个。这么一个数组,我们让外部可以引用到额外的数据,一个user啊,所属的用户和一个。细节。啊,接着我们去定义这两个音的一个方法。Republican。放个心可的有色。这个是额外的。用户数据。Response。
30:03
啊,不用直接return this里面的。用户的话是一条啊item。啊,这里把我们的order。给依赖注入进来。然后用A关联的这个user。啊,去使用这个数据,然后使用user的这个。有的transformer。好,先写一个,我先试一下啊,不要慌,那现在是什么数据都没有的,是不是就不是什么数据没有,是没有引入user,假如我们加一个银可录。然后加一个U,看看能不能把这个用户表给引过来。是不是多了一个用户的一个数据,对不对。好吧,啊。那接下来我们来。啊复制啊,把细节给引入过来,额外的订单细节细节。
31:05
把这个变量改一改啊。啊。Details。细节应该返回一个集合啊。是他的。啊,这个。模型的这个关联关系啊,我们调这个模型的这个关联关系。模型关联就可以拿到啊。啊,应该是这个这个名字啊,这个名字。使用它啊。就可以拿到这个订单相关的一些细节,然后transform我们就当然要使用它的了,是不是?对吧。他是不是没有呢,没有呢,我们复制一个改一改去。来复这个还复制用户的用户的好感。Or d d。ETARS。啊,这个穿刺分母。
32:00
嗯,这个字段就比较简单了,一个user-ID。User-ID。这里换一换,换成order details。好,然后还有一个商品的这个ID是吧。接着还有价格和数量是不是。数量。来有了这个呢,我们在order的这个transform就可以使用啊,细节的这个transform。测来,现在看一看我们能不能把订单的细节给引过来。啊,给包含进来啊,现在是包含了这个用户啊,如果我想包含额外的这个。这个这个订单的这个细节呢,De。
33:02
看一下啊。嗯,报错。这个模型啊,找不着。啊,所以它就是还会有一个默认约束啊,去对应去找我们。需要的这个模型。啊,所以啊,那我们这里要。改变一下啊,改成。Order。啊,这样就可以了。它有个默认约束啊,他会去找对应的这个这个和这个同名的一个模型啊,包括他还会去找对应的in可啊加上这个的一个方法。什么?这是一个默认的一个约束。是不是就拿到了。用户啊。但是我们这里引入的就就不对了,要引入刚才我们改了名字后的这个东西。来看一看用户的是不是我们订单细节的。
34:02
是不是都有,你看两个细节拿到了是吧,但是。有时候我们还想啊,嗯。我这样拿数据我也没法用啊,因为你看这里,你给我显示的是商品的ID和用户的ID,我都不知道商品的标题是什么,难道你让我拿ID再查一遍。是不是肯定不这么low啊?这个用户ID是not有问题,那肯定是这个transform的这里。有问题啊。All限制,他没有用户ID,他有订单ID搞错了。说这个数据看着不对。你们接着回到刚才我们的问题啊。你看我是把这个细节给引进来了,但是你这都是ID啊,你订单的ID和这个商品的ID,那我并不知道你是哪个商品啊,我再去查一遍吗?甚至我不知道哪个订单。啊,订单我可能知道,因为我是在这里去引入的,但商品我不知道。啊,我知道我你不能给我看ID,我要商品的名字,但是我拿拿它再查一遍。
35:03
不用啊,我告诉你,那既然我们用了transform,可不可以在这里去,呃,也去定义,也就是说我们order details这个细节的这个transform里面去定义额外的一些数据可以吧来。啊,让他额外的去。嗯,引入什么呢?引入这个订单和。商品。对不对。来看看模型里面我们定义这两个方法,没有定义的有啊,可以直接用,没问题。是不是接着我们去?处理他的这个额外的一个返回的一个数据啊。复制一下吧。在这个。Details唱的。OK。啊,这里其实就不用了,这个应该是用我们的这个details,用这个东西啊。
36:03
这不用的就删掉。额外的啊,订单数据啊,就是可以通过我们的细节也去拿到这个订单的一个数据,当然这个我可能用不着,但是我们把它写上吧,它必定是啊存在这个关系的,清楚吗。它里面的order,你这里拿的是order的这个数据,你就要使用order的这个传字母。Order transform,好,这个我们不一定用着啊,因为你这里。已经拿到了订单信息啊,你这里就没必要再给他再拿一次这个订单,他关联的订单信息,只要其实我们最主要用的就是这个商品的。清楚吗?嗯,如果大家感觉有困扰,那这个订单我们就不写了。啊,就不写了。额外的。这个商品嘛,数据。那我们就只写这个商品的这个吧啊。省得大家有困扰。
37:00
裤子啊。那就是他的这个故事,用它的模型关联去拿到所有的,就是它所关联的这个商品的一个数据叫什么?你注意这个模型里面我们关联的是什么,Has one。啊,结果是一条,所以这个transform里面我们就用item啊,当然你这个是返回的是商品的数据,那这里你就要用商品的这个transform清楚吧,好。接着来看一下。现在我们就。跨了好几层啊,你看现在我们明明查的是订单的一个列表,但是通过这个银可路的,我们把。啊,这个订单的细节给拿到了是不是。你看是不是,但是现在我又想再接着往下找,拿到这个细节下面的商品的一个数据,这时候怎么办。啊,你可以在这个这里面继续写点。啊,就是我要继续要拿你你所关联的一个商品的一个数据。清楚吧。不错了啊。
38:01
他要去商品里面去找这个ID,说明我的模型关联间那里有问题啊。找到细节里面这个模型的关联,这里有问题啊,这里。啊,因为我们如果用hasone的话,Hasone的话,它的这个外键应该是啊,就是这个表的一个外键,它的里面的这个外键,好吧,它这里面应该写ID。所以说啊,这个从属关系。我可以改一改啊,这么换一种理解方式也行,就是我们这个订单的这个细节啊,是属于哪个商品的。那么如果你非要去这么去理解,就是说,哎,我们这个订单的这个细节。啊,它是啊,有哪些商品关联哪个商品。那你就把它改成ID是吧,那这样不注意我们理解,我们把它改成belong to吧,啊,就说我们这个订单的这个细节啊,它也是说去。和这个商品去建立一个关联,这样的话这里就不用改了啊,如果你感觉这么理解别扭,你还要使用hasone啊,就是说我就是认为这个商品的这个细节。
39:05
啊,它是有对应的一个商品,那你就把这个外键改一改啊,这个外键,这个外键是你关联的这个表里面的这个键。知道吧。这个就是裤子杠ID。再尝试一下啊。是不是拿到数据了,看一看我们的细节拿到了,是不是这里银可的细节,然后细节里面是不是又给我们包含了商品。对不对,这样的话我们就完成了,就是说使用这个银可录的你可以,呃,就是说。如果要拿到他们这个关联的这个相关的关联的数据的话,可以用点啊,就我不仅要拿这个订单相关联的这个订单的一些细节数据,我还要拿订单的一个细节所关联的商品的数据啊,就接后后面用点就行了。知道吧,这个一个例子就很明显了啊,刚才我们错的是这个模型关联建错了。
40:04
好,这样的话。订单的这个列表就写完了,包括他的查询条件,还有它的这个传测form,一些额外数据的一些处理。啊,就完成了。
我来说两句