资讯专栏INFORMATION COLUMN

windows下laravel5.5手写教程2路由Eloquent ORM操作(适合初学者)

BlackFlagBin / 1931人阅读

摘要:一路由目录众所周知,对于我们熟知的任何一款框架,例如路由系统都是极其重要的存在。文件用于定义界面的路由。定义在中的路由都是无状态的,并且被分配了中间件组。生成的控制器为每个行为保留了方法,同时还包括了处理动作和的声明注释。

一、路由目录

众所周知,对于我们熟知的任何一款PHP框架,例如TP、CI、YII、路由系统都是极其重要的存在。
对于laravel框架也一样,对于数据库的操作,无非就是增删改查,只不过框架不同,语法不同,
所以掌握laravel框架的路由系统对于我们掌握该框架有着至关重要的作用。
我们知道对于LARAVEL框架以前的版本,路由都是写在app里的,现在的laravel框架路由存在在Routes目录下,如下图所示:

所有的 Laravel 路由都在 routes 目录中的路由文件中定义,这些文件都由框架自动加载。
routes/web.php 文件用于定义 web 界面的路由。
这里面的路由都会被分配给 web 中间件组,它提供了会话状态和 CSRF 保护等功能。
定义在 routes/api.php 中的路由都是无状态的,并且被分配了 api 中间件组。
我们先来熟悉一下HTTP访问的几种方法:
1.  Get方法:常用的方法,略;
2.  Post方法:常用的方法,略;
3.  Head方法:与get方法类似,主要是为了获取某个访问的头部信息,
服务器不返回请求内容;
4.  PUT方法:请求往服务器上存文件;
5.  DELETE方法:请求删除服务器上的文件;
6.  TRACE方法:就是获取服务器收到的来自客户端的请求信息(收发调试),
一般用于调试服务器;
7.  Connect方法:把服务器作为跳板,让服务器代替用户去访问其它网页,
之后把数据原原本本的返回给用户;
8.  Options方法:获取服务器URI所支持的方法,或用于检查服务器的性能,
ajax进行跨域访问时,先发送options方法来判断请求是否安全。

二、熟悉路由

我们先写几个简单的路由来认识一下Laravel下的路由路径。
在开始练习之前,我们先关闭routes/web.php 下的下面两行auth相关代码,避免影响练习测试。
//Auth::routes();
//Route::get("/home", "HomeController@index")->name("home");

此刻我们访问127.0.01:9999/news时,显示的应该是NEWS字样。
接下来我们来給数据表中填充十组数据,然后建立Model类以及控制器,通过路由来访问这些数据。(这里就不通过laravel自带的 seed 填充了,有兴趣的朋友可以自行查询怎么填充模拟数据.关键字"laravel seeder")。表结构如下图所示

使用artisan命令建立Model类,打开cmd 切换到项目根目录,输入php artisan make:model News
得到如下图所示

打开app/News.php 文件,由于laravel默认Model类对应的表名为类名加s,既对应的表应该是newss,我们在文件中加入protected $table = "News",指定该model类对应表news。
我们再使用artisan建立控制器. php artisan make:controller IndexController
成功之后,打开app/Http/Controllers/IndexController.php ,测试成功。


加入路由

测试成功

至此说明我们已经可以通过路由访问通控制器,
接下来我们来使用Eloquent ORM 来调取数据库数据。


如上图,需要在文件头部引入对应Model类
use AppNews ,然后 在方法Index里调用News::all() Eloquent方法,然后展示出数组模式,toArray();

除此之外,我们还可以使用DB类的静态方法来和数据库进行交互。
toArray());
        $news = DB::table("news")->get();
        var_dump($news);
    }
}

以上只是数据库最简单的展示方法,具体的增删改查我们会在下节教程继续学习,现在我们再回过头来,看看路由的几种规则。
1、路由的match、any方法
/*
match方法是laravel自己封装好的,同样它的意思是匹配
*/

Route::match(["get,post],"admin/login",function(){
    return "login";
});

/*
在这里呢我们可以用match这个方法去匹配两种请求方式,这样是不是减少了代码量呢
*/
我们还有第二种方法,
/*
GET,POST,PUT,DELETE.. 任何方法访问 www.itbool.com/Admin/login, 都用第2个参数中的匿名函数去响应所有HTTP动作 .
*/

Route::any("Admin/login",function(){
    return "hello world";
});

2、路由传参
Laravel的路由传参参数必须使用花括号来包裹并且是拼音字母例如使用{id}表示$id参数,具体示例如下图所示:

3、路由正则约束
即当我们要验证一些字段的时候,在laravel中,我们可以直接在路由中作出限制。
普通形式
->where("要限制的参数名","限制规则(正则,不用斜线//)");
数组形式
->where(["要限制的参数名1"=>"限制规则1(正则,不用斜线//)","要限制的参数名2"=>"限制规则2(正则,不用斜线//)"]);
如下图所示:

4、资源路由
例如:我们先用artisan命令,生成一个控制器:

php artisan make:controller PhotoController   --resource

(artisan命令还有很多,可以极大地提高我们的开发速度)
接下来为这个控制器注册一个资源路由:

Route::resource("photo","PhotoController");

此时打开cmd命令行 输入php artisan route:list ,可以看到如下图

这个路由声明创建多个路由来处理资源上的各种行为。生成的控制器为每个行为保留了方法,
同时还包括了 处理 HTTP 动作和 URI 的声明注释。
这里需要注意的是因为 HTML 表单不能生成 PUT、 PATCH 或者 DELETE 请求,所以你需要添加一个隐藏的 _method 输入字段来伪造这些 HTTP 动作。辅助函数 method_field 可以帮你创建这个字段:

{{ method_field("PUT") }}

或者在表单中加入像这样

表单提交方式不需要变,依旧是 method="POST"即可。

5、控制器路由(5.3以后已经取消了,不再赘述)
每条地址规则都要定义路由,岂不是很累,laravel有一个控制器路由,很好的解决了这个问题。

Route::controller("/example", "ExampleController");    (5.3已弃用)

6、路由组
在很多模块操作中我们需要把路由分组,对于他们进行权限分组限制,这时候我们就可以使用路由组结合中间件Middleware来进行简单的限制。
1)建立中间件
首先我们在应用根目录下运行如下Artisan命令生成一个测试用的中间件TestMiddleware:

php artisan make:middleware TestMiddleware

这样会在/app/Http/Middleware目录下生成一个TestMiddleware.php文件,
打开该文件编辑TestMiddleware类的handle方法如下:

public function handle($request, Closure $next)
{
    if($request->input("age")<18)
        return redirect()->route("refuse");
    return $next($request);
}

我们在中间件中定义这段业务逻辑的目的是年龄18岁以下的未成年人不能访问。
2)新增中间件属性
然后我们打开/app/Http/Kernal.php文件,新增TestMiddleware到Kernel的$routeMiddleware属性:

test" => AppHttpMiddlewareTestMiddleware::class,到数组中去

3)定义路由组

Route::group(["middleware"=>"test"],function(){
    Route::get("/write/laravelacademy",function(){
        //使用Test中间件
    });
    Route::get("/update/laravelacademy",function(){
       //使用Test中间件
    });
});

Route::get("/age/refuse",["as"=>"refuse",function(){
    return "未成年人禁止入内!";
}]);

此时,我们访问127.0.0.1:9999/write/laravelacademy?age=15时候,
就会自动跳转到http://127.0.0.1:9999/age/refuse。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30614.html

相关文章

  • laravel5.5手写教程3的基于资源路由的CURD操作适合学者

    摘要:新增一篇新闻新增失败输入不符合要求请输入标题请输入内容新增文章上面代码中的是为了防攻击的,每个表单都必须存在。 本文我将结合简单例子,完成laravel框架下的增删改查,希望会对大家有所帮助。在进行之前,大家应该保证自己的数据库链接无误,artisan命令能正常使用,路由链接无问题。 一、创建控制器、路由避免影响其他路由,我们先注释掉之前联系时编写的所有路由。因为上一章我们已经学会建立...

    olle 评论0 收藏0
  • laravel5.5手写教程4Eloquent ORM分页及软删除

    摘要:从而达到了软删除。不过,你可以通过在查询中调用方法来强制查询已被软删除的模型方法也可以被用在关联查询只取出软删除数据会只取出软删除数据恢复被软删除的模型有时候你可能希望取消删除一个已被软删除的模型。 Laravel 有三宝,路由、容器和 Eloquent ORM,Eloquent ORM。我个人一直比较推荐于在实际操作中学习,之前简单了解了路由和Eloquent ORM的基本用法,今天...

    mindwind 评论0 收藏0
  • windowslaravel5.5手写教程1(适合学者

    摘要:打开浏览器输入,如无意外,将出现如下图,表示框架安装成功。四系统内部后台管理系统这个是框架自带的后台登录管理系统,只需要简单的命令即可运行。出现上图即为,创建模型成功。 在PHP个各种web开发框架中,laravel算是一款简洁、优雅的开发框架,本人也刚刚接触到laravel,通过学习大神们的一些文章,下面是我的一些心得体会,希望可以给初学者一些帮助,大家一起进步。言归正传: 本人环境...

    GeekGhc 评论0 收藏0
  • Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程

    摘要:原文发表在我的个人网站系列入门教程一最适合中国人的教程本教程示例代码见大家在任何地方卡住,最快捷的解决方式就是去看我的示例代码。在此我推荐一个全量中国镜像。 原文发表在我的个人网站:Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程】 本教程示例代码见:https://github.com/johnlui/Learn-Laravel-5 大...

    EscapedDog 评论0 收藏0
  • 深入理解 Laravel Eloquent(一)——基本概念及用法

    摘要:原文发表在我的个人网站深入理解一基本概念及用法在本系列文章中,我将跟大家一起学习的基本用法,探索的各种高级功能,理解背后的运行原理,并最终达到深入理解灵活使用的目的。下一步深入理解二中间操作流 原文发表在我的个人网站:深入理解 Laravel Eloquent(一)——基本概念及用法 在本系列文章中,我将跟大家一起学习 Eloquent 的基本用法,探索 Eloquent 的各种...

    Edison 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<