本文共 7490 字,大约阅读时间需要 24 分钟。
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::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);
显示分页结果 https://learnku.com/docs/laravel/5.5/pagination/1328#displaying-pagination-results
关于项目中使用路径(“./”与“/”)的说明:
如果一个路径是给php代码使用的则建议使用“./”,如果路径是给前端浏览器使用的则使用“/”。【在后端代码中,/表示的不是站点或项目根目录,而是表示磁盘根目录】可用的验证规则 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’, 注意:并不是所有的字段都有对应的翻译(或者有的翻译可能不是很准确),如果想自己定义翻译,则需要去修改语言包文件代码正如前面所提到的,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属性,值是不要前缀的表名(真实的表名),如果不指定则使用类名的复数形式作为表名。如果模型为Member模型在不指定table属性的情况下,其默认会去找members表。修饰词:protected第二:(可选)定义primaryKey属性,值是主键名称,如果需要使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 第四:(可选)定义 timestamps属性,值是false,如果不设置为false,则默认会操作表中的createdat和updatedat字段,我们表中一般没有这两个字段,所以设置为false,表示不要操作这两个字段。修饰词:public第四:(可选)定义fillable属性,表示使用模型插入数据时,允许插入到数据库的字段信息。格式是一维数组形式,修饰词: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框架自带的,则任意选择; 如果使用的方法有用户自己在模型中定义的,使用第②种形式。https://learnku.com/docs/laravel/5.5/csrf/1295
继承语法:
子模版中按以下语法书写: @extends(‘需要继承的模版文件名’) 其名称要是完整的路径,类似view视图路径 通过section标签绑定区块/部件到父级页面,区块名称就是父级页面yield标签的参数名。 @section(区块名称) 代码 @endsction@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)}}Input::get(‘参数的名字’, ‘如果参数没有被传递使用该默认值’) //类似php里三元运算符Input::all(): 获取所有的用户的输入Input::get('参数的名字'): 获取单个的用户的输入Input::only([ ‘id’,’age’]): 获取指定几个用户的输入Input::except([ ‘id’,’age’]): 获取指定几个用户的输入以外的所有的参数Input::has('name'):判断某个输入的参数是否存在上述方法既可以获取get中的信息,也可以获取post中信息。
在Laravel中友好输出函数:
dump() dd() // =dump + die //dd函数之后的内容将不会继续执行;