00:01
在学完模型观念之后啊,接下来我们去完善我们的。博客的详情。首先啊,这里是之前我们写页面写死的一个页面啊。现在要去改我们的控制器,把我那些数据都换成真实的。博客的详情使用的是。修方法。啊,这个。呃,之前是传入的是这个ID。我们确实也能拿到这个ID对吧。那现在我们学了这个路由的模型啊,注入。这里可以我们依赖一个博客的一个模型。啊,使用模型输入的话,这样当我们传入的这个ID啊,它就会去。
01:01
啊,这个博客表里面去帮我们查找对应的数据,并且给到这个模型实例。如果不存在,就查不到这个数据,就会我们返回C04,这样不用我们再去检索啊,用户输入的这个ID存不存在对吧?不存在就会返回C04,如果存在的话,就会给我们返回这个模型的一个实例。这个时候拿到模型实力之后。我们把这个模型实例返回到。这个视图,让视图可以使用。这个数据。哎,接着我们去替换啊,我们。这个视图里面的这些数据首先替换这个标题。找到页面文件。
02:03
小。找到这个标题进行替换。Blog里面的title。然后是。他的这个时间啊,几个月前。使用。博客的更新时间啊。然后更新时间呢,它是一个。啊,这个cup的实验对象。使用carbon对象的啊,Diff for month啊,这个方法就可以显示几分钟前看看效果来。啊,是不是22小时前我们的时间有了。然后是。呃,浏览量浏览量。我们没有这个字段,好像看一下。是没有这个字段。
03:01
啊,所以我们要去添加这个字段。这个是评论的数量,评论呢也没有相关的表,我们在后面去加了这个评论的表的时候,再回来处理这个。先把这个字段我们给补上。Art make。Migration。ADD view To Blog向博客表添加一个。这个view字段。指明我们的表。创建这么一个迁移。接着去牵引文件里面。加上这个字段。尺寸,嗯,整形就行。
04:02
唯有子弹的名字。给个default默认值,默认是零,也就是浏览量是零,然后写下备注啊,浏览量。接下来运行我们的迁移。这样就帮我们增加这个字段看一下。刷新一下。是不是有了这个一个字的。那这里面就可以去。显示真实的一个浏览量。我有。啊,这个评论的数量我们等。完成评论的添加之后再来加啊。接下来看看啊。接下来是处理我们的文本内容。我们的文本内容因为是。
05:04
马可当格式的。啊,所以。用到了这个马可当的。这个对象来处理文本的内容。啊,从我们的这个div里面去获,从这个div里面去获取内容,把它获得内容之后,把它放到这个八个当的这个转化的对象转化成A,最终在这个里面显示这个A面。我们既然能可以从博客里面去拿到这个数据。啊,就不用它了啊。就把这个删掉。好,把它删掉。那这个呢,就应该直接是。Blog。里面的。Content。哎,我们这个内容是获取它的content,然后放到马当的这个转化器里面。
06:02
刷新一下看看。是不是就我们的内容。但是啊,会有一个问题,什么问题呢。因为我们的这个博客的内容,它是支持马克堂语法的,也就是里面我们可能会有一些马克当的一些语法标记,它会对这个GS的语法。造成一些影响。好,我们来看一下。呃,找一篇马可当的一个笔记啊。我们就用这个内容吧。好。然后去添加一个博客。Blog。标题。
07:00
马课堂笔记啊。分类随便选一个。然后把我的内容粘贴上。好,这样我们就添加了一个博客,回首要看一看,有一篇这么一个博客。然后我们去点进去看一下。这个链接现在点不了啊,这个链接。我们要把这个首页的这个链接处理一下,才可以点去使用,现在是ID都写死了,你看都是一,我们要把这个首页的改一改,才能点回来改一下首页。找到链接这里。那这里是写死的是吧,那这里因为我们已经循环了博客的这个。啊,这个模型,所以直接把这个博客的。博客的这个模型传进去就可以了,用我们的修复方法,他需要接受一个路由参数,你直接传这个博客的模型就可以,或者说是传这个ID也可以啊,或者使用数组的形式。
08:07
啊,使用数值形式。去传都可以的,因为只有一个路由参数,我们直接就写这样就可以,这样的话每一条数据就会对应上使用上的ID,比如说第一个是38是吧,第二个是37,你点进去看一下。会发现内容没有,如果你打开这个网页检查的话。他这里会给你报一个错,对不对,然后是在这个38行,然后错误的原因就是你看我们这里是把博客的内容给拿出来了,给到了GS的变量地位,但是我们马克当语法,它里面包含很多这些符号。看到了吗?啊,包含这个很多符号,所以就导致了GS的报错,我们的玛卡当渲染不出来,这时候怎么处理?回到我们的秀房网里面。这时候我们就不用这种写法了,使用什么呢?使用这个。As,杰森啊杰森,我们知道他是用了这个PP的啊。
09:04
节省抵扣已扣的去进行转码的,对吧,那虽然我们给的不是一个数组,不能转成标准的一个节省数据。但是他也会把字符串帮我们转成啊这个unicode的一个编码,看一看效果。是不是就有了?那我们看一下代码是不是把我们的这个都转成了unicode这个编码,这样的话就可以忽略这个。看,这些特殊符号对我们的GS的语法产生了一个影响。啊,现在我们的内容是都有了,看一下。哎,那个当的一个内容。当图片因为链接的问题是没有拿到。有关了啊。这样我们的内容。就处理好了。接下来看看还要处理什么数据。还要处理啊,这个浏览量,浏览量的话,我们应该让他就说页面每刷新一次,它增加一是不是。
10:05
在这个修房房里面。没。进到这个秀方法里面,我们就让对应的这个博客啊,增加一增加是不是可以使用increment。这个。方法去让它的某个字段去自动长音,我们的是唯有字段。刷新,眼看看来。是不是长的烟?是不是增长了一对吧,又增长了一个,但是你会发现一个问题啊,随着我们的这个浏览。你看,随着我们的浏览,我们的时间也一直在变。对吧,我们的时间也是在变。因为啊,我们的update这个字段。他是不是会被这个模型给管理。你看我们使用的这个阿布这个字段嘛,它会被模型给管理,就当发生更新的时候,这个时间会更新嘛,那我们让这个唯有这个字段增长力,是不是相当于对这个模型进行了一个更新,所以这个阿布D的字段也会进行更新。
11:01
那怎么怎么样去不让它更新呢。可以,诶在这个。数据这个模型发生更新之前,我先临时去禁用它的。Times,我先让它等于false,先不让它去维护这个字段可以吧,这样的话它就不会去更新了。对不对,下面我出形象。啊,你会发现啊。报错了,他说你不能在一个字符串上去使用这个方法说明什么,当这个模型不再维护这个时间的这个字段的时候啊,这个时间的这个结果,它就不是一个。Carbon实验对象。打一下看看。弟弟。好,现在我们把这个时间的这个啊,维护的这段给关了,刷新一下。是不是一个字符串对不对?如果我们不把它给关掉,就是让模型来维护这个时间字段,我们再来看看它是什么类型。是不是carbon的一个时间,时间的一个实例?
12:02
对吧。那怎么办?而且我们必须要关掉才行,要不然的话,这里这个浏览量的更新会导致这个更新时间的更新。啊,所以我们可以在这里先啊关闭一下,等我们更新完之后。啊,再去把它开启就可以了。这样的话,他还是一个实验对象。小心眼看看。是不是它既然是这个卡的实验对象,我们就可以使用那个方法,所以这样就没有影响了。是不是就对了,30秒前,随着我们的刷新,我们的浏览量会增加,但是这个时间不会再去改变了。这块除完了,接着处理什么呢?这边是不是显示我们的分类。对吧,分类信息。博客。我们的表里面是有一个分离子段的。对不对。好。要显示这个分类信息怎么办?我们是不是可以去博客表里面。啊,去建立博客模型和分类模型之间的一个关联关系,用我们所学到的这个模型关联。
13:07
来去找一下博客。不行。在这里啊。Function。写上注释。我们想一想,博客和分类是什么关系?是不是博客?啊,属于哪个分类。属于哪个分类对吧。所以它应该是一个呃,分类作为主表,而博客作为图表。这里我们就使用。因为是属于嘛,是吧,所以用这个。Belong to。啊图谁呢?分类的模型啊C分类的模型,他们现在没有分类的模型。
14:01
看到了吧,是不是可以通过命令去创建这个分类模型的这个字段啊,这个表。来重建一下。Artisan make model。好,就创建一个这样。有了这个模型啊,它呢,会和我们数据库里的这个复数的一个形式的表去进行关联,也就是和我们的分类表这个复数形式关联,当然如果不放心的话,你可以指定这个模型的这个。啊,表的一个属性,让它去使用对应的一个表,这个就是我们分类的一个复数的形式啊,是它这个Y结尾的嘛,因为是IES是它复数形式,所以它会进行一个默认的一个关联。好。那有了这个分类的这个模型之后,就可以在博客里面去写分类和博客的关联,我们这个博客属于哪个分类,Belongs to,然后是分类的类名。
15:03
克拉。啊,接着写我们的键。啊,因为我们是用的比较标准的一个关联,所以这个是可以省下的,当然我们还是把它写完整,方便大家去理解这个模型之间的关联。嗯,先捋一下主从博客属于哪个分类,我们分类作为这个主表是吧,博客作为从表,所以这个外键应该是博客里面的啊,这个它和分类进行关联的一个表。Great ID是不是好?接着是你看owner k主表的K就是分类表里面的K,是不是分类表里面的ID?啊,这样的关联关系我们建立好了。啊,那建立好这个分类的关联关系之后呢,就可以直接在模型里面去使用。这个分类相关的信息。比如。找到我们分类这一块啊。分离是在下面引入的这个子势图,是不是引入这个子势图。这个名称我们就可以换掉了,换成什么呢?博客。的这个分类啊里面的。
16:04
内幕。通过博客,然后通过这个动态属性的方式,我们拿到分类相关的这个这条信息,然后取分类里面的这个内幕。这里我们为什么不用这个预加载,因为这就是一次查询,所以直接用就可以了,它不会产生这种啊,你循环多次的一个查询。什么?接下来。看一看啊。刷新一下。分类是不是拿到了,对不对,那这个分类这个名字也得变啊,也就是我们这里的一个文字也得变。把这里。连接一下字符串啊,连接一下我们的这个分类的名字。好。刷新一下。这里也调完了是吧。啊,接着是一个文章的数量,也就是说这个分类里面的文章的一个数量。
17:01
是不是这时候。呃,我们当然是可以在这个控制器里面,我们去查出来这个博客所属的这个分类相关的一个数量是没问题的,然后再返回到页视图中输出去用,还可以使用什么,我们既然使用了模型关联,为什么不去使用模型关联呢?啊。对吧,我们既然做了博客和分类的关联,那么分类是不是也可以和博客进行一个关联。对不对。写一下啊。方形。Blocks。想一想分类和博客的一个关系,是不是分类啊,分类有多少,博客就是该分类。所有的博客啊,所拥有的博客。啊。拥有的所有博客啊,一个分类可以有很多博客嘛,所以这里应该是一个has many的一个关系,对吧。
18:05
煤炭,Do this?Has many啊,它有很多博客,博客,然后写上博客的类名。Blog class。啊,接着把我们的关系写上。第一个啊,博客的一个外键,因为博客是作为从表嘛,这是关联表的一个外键嘛,博客作为一个关联表。啊是C9D对吧,接着是本地的这个本表的一个。这个关联减CD。那么分类里面我们定义了这个它拥有的一个博客,这时候在视图里面是不是就可以使用分类的这个关联关系去获取这个数量了啊。当然我们看我我先通过博客。啊,这个博客去拿到这个博客所属的一个分类,接着再通过分类所关联的这个所有的博客这个关联去拿所有的一个数量。
19:07
可以吧?啊。当然你这么写的话,是先拿到了所有的这个博客,是一个集合,再去统计集合的数量,可能会比较占这个。内存我们如果使用方法呢,使用方法的话,这个结果是不是就是一个,呃,分类的一个一个查询构造器,对吧,我们这时候使用抗是直接得到一个啊,从数据库层面去进行统计得到一个数量,现在来看看我们的数量对不对啊。是不是两条,因为我们这个分类下有两条。是不是?那接着我们又发现了一个新的一个问题。哎,这里我们想要说点这个分类,能到这个分类的一个列表里面。对吧,我们现在没有关于博客这个列表,但是我们有什么呢?我们有这个首页是不是,你看我们首页是不是可以搜索分类。
20:02
对吧,那我们可不可以点这个链接,让它跳转到首页,并且带上这个搜索的这个分类的相关的信息。可以吧,来继续修改一下。呃,因为我们用的是一个子势图,所以要去改的话呢,你要去这个指示图里面去改,它在common啊,Red car里面。找到我们的页面。Common。Red card。好,这里面也就是说啊。改这个地方,但是我们不能直接去改这个地方了,因为这个按这个视图,也就是说我们这个子视图,它不仅是我们的详情用到了我们的首页是不是还在用。对吧,所以我们可以通过啊,传不同参数的一个形式去来进行一个判断,比如我们在博客的这个详情页面,我们传什么参数呢。啊,Cat to传一个分类的ID。
21:02
啊,这个时候你用博客的这个里面的分类ID属性就可以了,传一个分类的ID到这个指示图,然后再指示图里面,我们去判断这个分类的ID if do分类的ID啊,得用set。因为首页的话可能不传这个变量,我们判断变量存不存在,应该是用it啊,如果这个变量存在,并且。啊,不为空。啊,并且不为空,这个时候我们就应该改成A链接,让它能跳转到首页对吧,否则的话你就还是button就可以了。N的if好。哎,这时候仍然改成A链接,然后给上哈属性。写上我们首页的路由index对不对,但是。我们路由是写好了,他跳水也没问题的,我们是不是还要带上这个分类的这个数据,这个参数。
22:01
怎么带以前的时候我们是不是在后面加问号,然后加这个啊,加这个分类的这个这是do数啊。加这个分类ID等于什么?是没传是不是啊,不用啊,我们学路由的时候是不是学过,如果一个路由它不需要这个路由参数,我们直接给他路由参数的话,它是不是会作为这个啊,Query的查询参数附加到链接后面,所以我们放到这里写就可以了啊,就在使用这个路由名字生成链接的时候,如果这个路由它不需要额外的路由参数,我们又给他了,他会把这个作为。这个额外的查询参数放到这个链接后面。这里显示我们的变量。这样就可以了,就可以去首页去看所有的一个这个分类下所有的文章刷新一下试试。可以看到,哎,可以看左下角的这个链接啊,是吧,然后我们点的时候就能回到手上,而且是带上了这个分类的消息是吧,带上分类的这个信息,这样的话啊,这里也就优化完了。
23:04
你看首页,但首页呢,还是一个八层。是不是八层的话呢,我们就不让它出现这个小手,不让它能点击,所以还要继续优化一下。写。代码就是做产品一定要心细啊。取消它的这个鼠标悬浮的一个效果。CU course,然后初始化啊,重新初始化它的鼠标悬浮的一个效果。就不会出现这个小手了。啊,就是这样的一个形式,那我们去一个详情里面啊,它就是一个能点那个链接。哎,这块也就优化完了,包括我们这里的文字都是和我们的分类是对应上的啊。至少现在看来,除了这个评论我们没做处理,其他的都处理了是吧?因为评论我们要等完成了这个评论的添加,才能去回头头来处理这一块。继续往下看啊。呃,接着要处理什么呢?我们去找一篇比较短的一个内容,这个比较长啊。
24:02
找一篇比较短的一个博客,接着要处理下面的这些内容。啊,也就是回复啊,回复现在还没有学回复这块,这里先不做处理,我们把这个下面这个处理了,就是登录没有登录的时候,我们提示他登录,如果已经登录,哎,这里输入框,所以他俩应该是一个判断的一个情况,那我们去做一个判断啊。找到。博客相信的。找到。啊,这里啊,这里和这一块,他们应该是一个if else的一个情况。判断登录是不是使用。As also,指令。之前在学模板的时候学过的指令,对吧,包括我们的头部的头像的处理都是用到它,它这就是登录的情况,Else就是没有登录。End also。接着。我们把代码粘进去,没有登录的话,就提示用户去登录,如果已经登录的话,就可以让他去发表这个评论。
25:11
这样登录我们也就做完了,把回复改改改成评论啊。来刷新一下。可以看到那个提示就没拿出来,因为我们现在登录状态,现在我们退出。好,退出之后再去这个详情里面看一下,让我们登录对吧?好,但是登录呢,这里点的话,你点不了,这里没给链接,所以我们要把这个登录的这个链接给上。啊,他现在还是个井号是吧。给上我们登录的链接,登录的链接是不是有一个root啊,不是这个log这样的一个路由名字。刷新一下。这个时候就可以去跳转登录了,好返回。再检查一下,应该是这个详情页没有什么要处理的一个地方了啊,包括这个马可当我们也都处理好了。
26:02
数量包括显示的分类的信息,包括去看对应分类的一个信息啊。应该都是。就是剩下回复,回复的话,我们在后面学这个评论的时候,添加评论的时候,再去处理回复这一块。
我来说两句