建立于: 4年前 ( 更新: 4年前 )
Laravel 8大改版,我的网站也跟著改版,我网站上的「笔记」及「文章」本来是分开两个区块的。
这次把他集成在一起了,反正也没什么文章,合起来内容看起来比较多。:p
我对文章的定义,就是内容较多较属於原创的部份。
笔记则是随手日志,供日后查询用,笔记可能原创或网络上抄来整理后的结果。
这次升级,分两天进行,第一天是踩地雷升级后台,从5.7.28升到8.8.0,
由於Laravel喷错满明确的,修改起来并不难,只有在改后台的Routes时,边改边念了一下下。
有跟我一样升级的人,应该懂我在说什么。
还好我的Vim marco已到炉火纯青的地步啦,大概三分钟内搞定,压空白自动改写,
不由心中再次赞叹Vim的巨集功能真是有够好用。
另一天,进行前台套版大改版,但一切从简。
本文单纯闲聊,分享我怎么改的,并不是教程如何升级Laravel。
如何升级Laravel,可以看看我的旧文章。
https://www.ccc.tc/article/how-to-update-ow-backend
这次升级,因为是大版号,所以我的策略也是直接装一套新的,再把我的后台入到composer.json中。
但其实可以试试调composer.json中的版号进行升级哦 ,可以看看Laravel的Upgrade Guide.
https://laravel.com/docs/8.x/upgrade
提到Laravel版号,刚好前阵子有朋友问我过我,如何取得Laravel的版号,我顺便贴到这里吧..
以上讲远了,回到本文,前台进程码部份,这里我把区块编号(b_ids)改为array了,
原本只显示单一内容就变成可以直显示多个区块内容啦,不知怎么的改Laravel改起来特别容易。
另外,在下方内容Model中,为啥我要自定义table及primaryKey ,绝对不是我太闲或看起来比较厉害,
是因为我后台在Laravel之前就有啦,因此,所有的数据表栏位早就定义好了,
才会出现这种自定义$table及$primaryKey的情况,不然基本上我会采用Laravel的规则叫ID就好了,然后Table是复数。
这次改版大概学到另一件事,就是我吐的数据都是相同的,不应该换个版连Controller都要换掉是吧。
所以,我把样版的数据夹拉出来改动态了,以后要调整不同的样版,改frontend就行啦。(开始计划来搞个多样版前台)
一切从简后,看起来网站速度有明显提升了,PageSpeed Insights有98分耶。
这次把他集成在一起了,反正也没什么文章,合起来内容看起来比较多。:p
我对文章的定义,就是内容较多较属於原创的部份。
笔记则是随手日志,供日后查询用,笔记可能原创或网络上抄来整理后的结果。
这次升级,分两天进行,第一天是踩地雷升级后台,从5.7.28升到8.8.0,
由於Laravel喷错满明确的,修改起来并不难,只有在改后台的Routes时,边改边念了一下下。
有跟我一样升级的人,应该懂我在说什么。
use App\Http\Controllers\UserController;
Route::get('/user', [UserController::class, 'index']);
还好我的Vim marco已到炉火纯青的地步啦,大概三分钟内搞定,压空白自动改写,
不由心中再次赞叹Vim的巨集功能真是有够好用。
另一天,进行前台套版大改版,但一切从简。
本文单纯闲聊,分享我怎么改的,并不是教程如何升级Laravel。
如何升级Laravel,可以看看我的旧文章。
https://www.ccc.tc/article/how-to-update-ow-backend
这次升级,因为是大版号,所以我的策略也是直接装一套新的,再把我的后台入到composer.json中。
但其实可以试试调composer.json中的版号进行升级哦 ,可以看看Laravel的Upgrade Guide.
https://laravel.com/docs/8.x/upgrade
提到Laravel版号,刚好前阵子有朋友问我过我,如何取得Laravel的版号,我顺便贴到这里吧..
$laravel_version=app()::VERSION;
以下ow_source就是我己做后台啦,透过psr4加载就能用了。
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/",
"Ow\\Model\\": "app/ow_source/seo-model/",
"Ow\\": "app/ow_source/seo-class/"
}
},
当然RouteServiceProvider要补上我自己后台专用的路由
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
Route::middleware('owadmin')
->namespace($this->namespace)
->group(base_path('app/ow_source/ow_routes.php'));
Route::middleware('owapi')
->namespace($this->namespace)
->group(base_path('app/ow_source/ow_routes.php'));
});
}
以上讲远了,回到本文,前台进程码部份,这里我把区块编号(b_ids)改为array了,
原本只显示单一内容就变成可以直显示多个区块内容啦,不知怎么的改Laravel改起来特别容易。
public function articles($bymonth){
$b_ids=[1,2]; //默认首页的区块
$queryStr = "";
if(!preg_match('/\d{4}-(\d?\d$)/u', $bymonth, $matches)){
return abort(404);
};
$bymonth.="-01"; //补上1号
$queryStr.=sprintf(" AND c_dt BETWEEN '%s' AND DATE_ADD('%s', INTERVAL 1 MONTH)", $bymonth,$bymonth);
$contents = Content::ofBlock($b_ids)
->whereRaw('1 = 1'.$queryStr)
->orderBy('c_id','desc')->get();
$archives = $this->archives($b_ids); //封存数据
//return $archives;
return view("$this->frontend.pages.index",[
'contents'=>$contents,
'archives'=>$archives
]);
}
本来是用where,改whereIn,就这么可以用了@@,下方的Model可以看到,我改成whereIn。另外,在下方内容Model中,为啥我要自定义table及primaryKey ,绝对不是我太闲或看起来比较厉害,
是因为我后台在Laravel之前就有啦,因此,所有的数据表栏位早就定义好了,
才会出现这种自定义$table及$primaryKey的情况,不然基本上我会采用Laravel的规则叫ID就好了,然后Table是复数。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Support\Facades\DB;
class Content extends Model
{
protected $table='content';
protected $primaryKey='c_id';
public function scopeOfBlock($query, $b_ids)
{
return $query->whereIn('b_id', $b_ids)->where('is_publish',1);
}
这次改版大概学到另一件事,就是我吐的数据都是相同的,不应该换个版连Controller都要换掉是吧。
所以,我把样版的数据夹拉出来改动态了,以后要调整不同的样版,改frontend就行啦。(开始计划来搞个多样版前台)
return view("$this->frontend.pages.index",[
'contents'=>$contents,
'archives'=>$archives
]);
这是我的修改差异一切从简后,看起来网站速度有明显提升了,PageSpeed Insights有98分耶。
No Comment
Post your comment