博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[bh]Laravel 5.5.28框架简介 www.bhlaravel.com
阅读量:4299 次
发布时间:2019-05-27

本文共 7490 字,大约阅读时间需要 24 分钟。

文章目录

关联模型 https://learnku.com/docs/laravel/5.5/eloquent-relationships/1333

Cache缓存系统 https://learnku.com/docs/laravel/5.5/cache/1316

Laravel 为不同的缓存系统提供了统一的 API(在框架中的写法)。缓存配置位于 config/cache.php。在该文件中你可以指定在应用中默认使用哪个缓存驱动。Laravel 目前支持主流的缓存后端如 Memcached 和 Redis 等。

主要方法:
Cache::put() 会覆盖原有值
Cache::get()
Cache::add() 方法将不存在于缓存中的数据放入缓存中,如果存放成功返回 true ,否则返回 false,不会覆盖已存在的键的值
Cache::pull()
Cache::forever() 会覆盖原有值
Cache::forget()
Cache::has()
系统默认是使用文件缓存,其缓存文件存储的位置位于(storage/framework/cache/data):
Cache::increment(‘key’);
Cache::increment(‘key’, $amount);
Cache::decrement(‘key’);
Cache::decrement(‘key’, $amount);

获取并存储 $value = Cache::remember(‘key’, $minutes, function() {}) 比较典型的操作就是在获取微信的accesstoken的时候可以使用。原因是accesstoken本身一天只有2000次的配额,而其有7200s的有效期,在有效期内可以不用去刷新请求。

Session会话控制 https://learnku.com/docs/laravel/5.5/session/1301

Session::put('key', 'value');			Session中存储一个变量$value = Session::get('key');			Session中获取一个变量$value = Session::get('key', 'default');	Session中获取一个变量或返回一个默认值(如果变量不存在)$value = Session::get('key', function() {
return 'default'; });Session::all(); Session中获取所有变量Session::has('users') 检查一个变量是否在Session中存在Session::forget('key'); Session中删除一个变量Session::flush(); Session中删除所有变量补充:session方法也可以在视图中使用,如:{
{
Session::get('code')}};在后期如果使用Laravel框架自带的验证功能模块(Auth)的话,则session就可以不需要使用了。另外,在laravel框架中还支持快捷函数session(),也可以设置和使用session的。两个语法: 语法1:设置session session([key => value]); 语法2:获取session的值 session(key);

Response响应 https://learnku.com/docs/laravel/5.5/responses/1298

  1. 提示:在laravel框架中,不允许向浏览器响应布尔值。
  2. JSON响应 return response()->json([ ‘name’ => ‘Abigail’, ‘state’ => ‘CA’]); 浏览器响应头 Content-Type:json;
  3. 重定向 https://learnku.com/docs/laravel/5.5/responses/1298#redirects
  4. 1

验证码 https://packagist.org/?query=captcha

  1. composer require mews/captcha
  2. https://github.com/mewebstudio/captcha

数据分页 https://learnku.com/docs/laravel/5.5/pagination/1328

显示分页结果 https://learnku.com/docs/laravel/5.5/pagination/1328#displaying-pagination-results

文件上传 https://learnku.com/docs/laravel/5.5/filesystem/1319#file-uploads

关于项目中使用路径(“./”与“/”)的说明:

如果一个路径是给php代码使用的则建议使用“./”,如果路径是给前端浏览器使用的则使用“/”。【在后端代码中,/表示的不是站点或项目根目录,而是表示磁盘根目录】

自动验证 https://learnku.com/docs/laravel/5.5/validation/1302

可用的验证规则 https://learnku.com/docs/laravel/5.5/validation/1302#available-validation-rules

https://www.jianshu.com/p/9e7aa6fe81ab
安装语言包 composer require laravel-lang/lang:~3.0 https://github.com/Laravel-Lang/lang
Copy the folders (and JSON files) of languages that you want to use, into the directory resources/lang of your Laravel application (or app/lang in Laravel 4).
config/app.php ‘locale’ => ‘zh-CN’,
注意:并不是所有的字段都有对应的翻译(或者有的翻译可能不是很准确),如果想自己定义翻译,则需要去修改语言包文件代码

查看验证错误信息 https://learnku.com/docs/laravel/5.5/validation/1302#quick-displaying-the-validation-errors

正如前面所提到的,Laravel 会自动把用户重定向到先前的位置。另外,所有的验证错误信息会被自动 闪存至 session。

$this->validate($request, [                // 此处是一个键值数组            “验证的字段名”  =>    "规则1|规则2|规则3...."                'name' => 'required|min:2|max:20|unique:member',//string 类型默认验证最小长度,最大长度                'age' => 'required|integer|min:1|max:100',//int 类型默认验证最小值最大值                'email' => 'required|email',                // 验证码验证规则                'yzm' => 'required|captcha'            ]

模型操作

Eloquent ORM https://learnku.com/docs/laravel/5.5/eloquent/1332 find get all save create update delete

总之一句话:在DB::table中能使用的方法,在模型中同样可以使用。
DB::table(‘xxx’) 等价于 Xxx模型

模型定义

第一:(必做)定义一个 t a b l e 属 性 , 值 是 不 要 前 缀 的 表 名 ( 真 实 的 表 名 ) , 如 果 不 指 定 则 使 用 类 名 的 复 数 形 式 作 为 表 名 。 如 果 模 型 为 M e m b e r 模 型 在 不 指 定 t a b l e 属 性 的 情 况 下 , 其 默 认 会 去 找 m e m b e r s 表 。 修 饰 词 : p r o t e c t e d 第 二 : ( 可 选 ) 定 义 table属性,值是不要前缀的表名(真实的表名),如果不指定则使用类名的复数形式作为表名。如果模型为Member模型在不指定table属性的情况下,其默认会去找members表。修饰词:protected 第二:(可选)定义 table使MembertablemembersprotectedprimaryKey属性,值是主键名称,如果需要使AR模式的find方法,则可能需要指定主键(Model::find(n)),在主键字段不是id的时候则需要指定主键。修饰词:protected

第三: (可选)定义 t i m e s t a m p s 属 性 , 值 是 f a l s e , 如 果 不 设 置 为 f a l s e , 则 默 认 会 操 作 表 中 的 c r e a t e d a t 和 u p d a t e d a t 字 段 , 我 们 表 中 一 般 没 有 这 两 个 字 段 , 所 以 设 置 为 f a l s e , 表 示 不 要 操 作 这 两 个 字 段 。 修 饰 词 : p u b l i c 第 四 : ( 可 选 ) 定 义 timestamps属性,值是false,如果不设置为false,则默认会操作表中的created_at和updated_at字段,我们表中一般没有这两个字段,所以设置为false,表示不要操作这两个字段。修饰词:public 第四:(可选)定义 timestampsfalse,falsecreatedatupdatedat,false,publicfillable属性,表示使用模型插入数据时,允许插入到数据库的字段信息。格式是一维数组形式,修饰词:protected(当使用模型的create、save方法的时候最好就得写上这个属性) ,反向指定的属性叫做:$guarded

基本操作

模型的使用:模型在控制器中的使用方式有2种

①直接像使用DB门面一样的操作方式:以调用静态方法为主的形式,该形式下模型不需要实例化,例如:Member::get() 等价于 DB::table(‘member’) -> get();
②实例化模型然后再去使用模型类(普通)
例如: m o d e l = n e w M e m b e r ( ) ; model = new Member(); model=newMember();model -> get();
两种形式的选择标准:
如果使用的方法都是laravel框架自带的,则任意选择;
如果使用的方法有用户自己在模型中定义的,使用第②种形式。

CSRF是跨站请求伪造(Cross-site request forgery)的英文缩写

https://learnku.com/docs/laravel/5.5/csrf/1295

  1. Laravel框架中避免CSRF攻击很简单:Laravel自动为每个用户Session生成了一个CSRF Token,该Token可用于验证登录用户和发起请求者是否是同一人,如果不是则请求失败。【该原理和验证码的原理是一致】
  2. laravel中关闭CSRF的方法 https://blog.csdn.net/wangrui12138/article/details/69548702

模版继承@extends 包含@include

继承语法:

子模版中按以下语法书写:
@extends(‘需要继承的模版文件名’) 其名称要是完整的路径,类似view视图路径
通过section标签绑定区块/部件到父级页面,区块名称就是父级页面yield标签的参数名。
@section(区块名称)
代码
@endsction

Blade模板变量输出

Laravel 文档阅读:Blade 模版 https://learnku.com/docs/laravel/5.5/blade/1304

@if($id =='12')    it is {
{
$12}}@else it is 11@endif
@foreach($user_list as $user)    

it is {

{
$user->id}}

@endforeach

视图文件的命名与渲染

(1)文件名习惯小写(建议小写)

(2)文件名的后缀是 .blade.php(因为laravel里面有一套模板引擎就是使用blade,可以直接使用标签语法{
{ $title }}, 也可以使用原生的php语法显示数据。)
(3)需要注意的是也可以使用.php结尾,但是这样的话就不能使用laravel提供的标签{
{ $title }}语法显示数据,只能使用原生语法 <?php echo $title;?> 显示数据
两个视图文件同时存在,则.blade.php后缀的优先显示。
(4) return view(‘admin.test.test3’, compact(‘data’));

展示视图的方法:

return view(‘视图文件的名称’);

视图可以进行分目录管理的,例如需要展示home/test/test2视图,则可以写成:

return view(‘home/test/test2’) 当然也支持点写法:view(‘home.test.test2’)

提示:变量在视图中展示的时候,在原先PHP文件中怎么写,在视图中依旧按照原先的方式进行编写,只需要写好之后在最外层套2个“{ }”即可。例如对于时间戳的格式化:{

{date(‘Y-m-d H:i:s’,$data)}}

数据库请求构建器

  1. insert(数组)可以同时添加一条或多条,返回值是布尔类型。
  2. insertGetId(一维数组),只能添加一条数据,返回自增的id。
  3. update increment decrement 返回受影响行数
  4. get 取多行数据 first 取单行数据 value 获取单个字段的值
  5. delete

接收用户输入(与文档有区别)

  1. 获取请求
  2. 接收用户输入的类:Illuminate\Support\Facades\Input
    Facades:“门面”的思想。门面是介于一个类的实例化与没有实例化中间的一个状态。其实是类的一个接口实现。在这个状态下可以不实例化类但是可以调用类中的方法。说白了就是静态方法的调用。
Input::get(‘参数的名字’, ‘如果参数没有被传递使用该默认值’)    //类似php里三元运算符Input::all(): 获取所有的用户的输入Input::get('参数的名字'): 获取单个的用户的输入Input::only([ ‘id’,’age’]): 获取指定几个用户的输入Input::except([ ‘id’,’age’]): 获取指定几个用户的输入以外的所有的参数Input::has('name'):判断某个输入的参数是否存在上述方法既可以获取get中的信息,也可以获取post中信息。
  1. 在laravel中如果需要使用facades的话,但是又不想写那么长的引入操作:
    Use Illuminate\Support\Facades\Input
    则可以在config/app.php中定义长串的别名(在aliases数组中定义别名):
打印输出

在Laravel中友好输出函数:

dump()
dd() // =dump + die //dd函数之后的内容将不会继续执行;

控制器

  1. 自动生成 php artisan make:controller [路径/]Test02Controller

路由

  1. get post match any
  2. 命名路由 -->路由别名 模版使用 {
    {route(‘route_alias’)}}
  3. 扩展补充:查看系统已经有的路由命令:#php artisan route:list
  4. // 针对分目录管理的控制器路由,其中的目录分隔符在此处已经变成了命名空间分隔符,因此得使用“\”
    Route::get(‘admin_test1’, ‘Admin\TestController@test1’);
  5. php artisan route:list | findstr article
  6. 2

项目创建

  1. 创建项目必须是空目录 composer create-project laravel/laravel=5.5.28 --prefer-dist ./
  2. php artisan --version 查看laravel版本
  3. php7.0 最大支持laravel版本 5.5.28

简介

  1. 数据库迁移工具、单元测试
  2. Laravel框架有一个特点,所有的URL访问都必须事先定好路由规则。
  3. httpd.conf配置文件需要开启的模块:
    LoadModule deflate_module modules/mod_deflate.so
    LoadModule rewrite_module modules/mod_rewrite.so
  4. 1
  5. 1
你可能感兴趣的文章
hive plsql使用示例
查看>>
Hive Explain(query查询显示执行计划工具)
查看>>
Hive Job层面的优化
查看>>
NoSQL(Not only sql)基础简介
查看>>
RDBMS vs NoSQL
查看>>
HBase基础
查看>>
Sqoop往Hive导入数据实战
查看>>
Mysql到HBase的迁移
查看>>
Sqoop import进阶
查看>>
Hive语句是如何转化成MapReduce任务的
查看>>
Hive创建table报错:Permission denied: user=lenovo, access=WRITE, inode="":suh:supergroup:rwxr-xr-x
查看>>
Hive执行job时return code 2排查
查看>>
hive常用函数及数据结构介绍
查看>>
Hive面试题干货(亲自跟着做了好几遍,会了的话对面试大有好处)
查看>>
力扣题解-589. N叉树的前序遍历(递归和迭代)
查看>>
力扣题解-700. 二叉搜索树中的搜索(分治法思想,递归的方式求解)
查看>>
力扣题解-230. 二叉搜索树中第K小的元素(递归方法,中序遍历解决)
查看>>
力扣题解-746. 使用最小花费爬楼梯(动态规划)
查看>>
力扣题解-103. 二叉树的锯齿形层序遍历(广度优先搜索)
查看>>
力扣题解-387. 字符串中的第一个唯一字符
查看>>