Laravel 框架
1.路由:通过路由将请求发送至处理函数
2.Laravel是简洁优雅的PHP web开发框架,具有富于表达性且简洁的语法,易于理解且强大的,提供强大的工具以开发大型健壮的应用,具有验证/路由/session/缓存/数据库迁移工具/单元测试等常用的工具和功能
3.Laravel版本5.1和5.2需要使用PHP 5.5.9+
4.文件夹分类:app:核心代码,业务逻辑
Http:编写控制器文件夹
bootsteap:自动启动和加载配置
config:配置文件
database:数据库填充和迁移文件
public:入口,项目静态文件(图片,js等)
resources:视图及原始的资源文件
views:视图存放文件夹
storage:编译后的模板文件,缓存,session等
tests:单元测试文件夹
cendor:以来模块
5.Laravel路由:
(1)路由简介:用户请求转发给相应程序进行处理;作用是简历url和程序直接的映射;请求类型:get/post/put/patch/delete
(2)基本路由:Route::请求类型('方法名',function(){});
(3)多请求路由:指定请求类型Route::match(['请求类型','请求类型'],'方法名',function(){});不指定请求类型:Route::any('方法名',function(){});
(4)路由参数:Route::请求类型('文件/{参数}',function(参数){}); 带正则Route::请求类型('文件/{参数}',function(参数){})->where(['参数'=>'正则',...]);
(5)路由别名(用route生成别名对应的url):Route::请求类型('文件',['as'=>'别名',function(){}]);
(6)路由群组(针对多个群组进行设置):Route::group(['prefix']=>'前缀名',function(){});
(7)路由中输出视图:Route::请求类型('view',function(){});
6.Laravel控制器:
(1)新建控制器:
namespace App\Http\Controllers;
class 控制器名 extends Controller{
public function 方法名(){
进行处理
}
}
(2)控制器和路由关联:
Route::请求类型('路由名称','控制器名称@方法名称');
Route::请求类型('路由名称',['uses'=>'控制器名称@方法名称']);
(3)关联后,路由特性怎么使用:
别名:Route::请求类型('路由名称',['uses'=>'控制器名称@方法名称','as'=>'别名']);
参数绑定:Route::请求类型('路由名称/{参数}',['uses'=>'控制器名称@方法名称']); 控制器传入 参数
正则限制:Route::请求类型('路由名称/{参数}',['uses'=>'控制器名称@方法名称'])->where('参数','限制条件'); 控制器传入 参数
7.Laravel视图(一个控制器对应一个文件夹)
(1)新建视图:
resources/views/文件夹名/文件名
(2)输出视图:
namespace App\Http\Controllers;
class 控制器名 extends Controller{
public function 方法名(){
return view('文件名');
}
}
加入变量:
namespace App\Http\Controllers;
class 控制器名 extends Controller{
public function 方法名(){
return view('文件名',['变量名称'=>'变量值',...]);
}
}
输出变量:{{变量名称}}
8.Laravel模型
(1)新建模型:
app/文件名
namespace App;
use Illuminate\Database\Eloquent\Model;
class 模型名称 extends Model{
public static function 方法名(){
进行处理
}
}
(2)模型使用:
控制器中进行调用
9.Laravel数据库操作(DB facade(原始查找)/查询构造器/Eloquent ORM)
(1)新建数据表与连接数据库
新建数据表:使用命令新建数据表
连接数据库:config/database.php/mysql方法
.env/修改数据库配置文件
(2)使用DB facade实现CURD
第一步: namespace App\Http\Controllers;
class 控制器名 extends Controllers{
public function 方法名(){
进行处理(打印另一种方法:dd)
DB::select('sql语句'); 查询(返回数组)
DB::insert('sql语句'); 插入(返回布尔值)
DB::update('sql语句'); 修改(返回修改行数)
DB::delete('sql语句'); 删除(返回删除行数)
}
}
第二步: Route::请求类型('路由名称',['uses'=>'控制器名称@方法名称']);
10.Laravel查询构造器:
(1)简介及新增数据:
简介:Laravel查询构造器提供方便/流畅的接口,用来建立及执行数据库查找语法;使用PDO参数绑定,以保护应用程序免于SQL注入因此传入的参数不需额外转义特殊字符;基本可以满足所有数据库操作,在所有支持的数据库系统上都可以执行;
新增:
public function 方法名称(){
DB::table('表名')->insert(['字段名'=>'字段值',...]); 插入(返回布尔值)
DB::table('表名')->insertGetId(['字段名'=>'字段值',...]) 插入获取自增ID
DB::table('表名')->insert(['字段名'=>'字段值',...],['字段名'=>'字段值',...],...); 插入多条数据
}
(2)修改数据:
更新为制定内容:
public function 方法名称(){
DB::table('表名')->where(条件)->update(['字段名'=>'字段值',...]); 修改(返回数量)
}
自增和自减:
public function 方法名称(){
DB::table('表名')->increment('字段名'); 修改自增(返回行数,默认1)
DB::table('表名')->increment('字段名',数量); 修改自增(返回行数)
DB::table('表名')->decrement('字段名'); 修改自增(返回行数,默认1)
DB::table('表名')->decrement('字段名',数量); 修改自增(返回行数)
加入条件:DB::table('表名')->where(条件)->自增自减('字段名'); 修改(返回行数)
DB::table('表名')->where(条件)->自增自减('字段名',数量,['字段名'=>'字段值']); 修改多个字段(返回行数)
}
(3)删除数据:
delete:
public function 方法名称(){
DB::table('表名')->where(条件)->delete(); 删除(返回行数)
}
truncate:
public function 方法名称(){
DB::table('表名')->truncate(); 清空数据表()
}
(4)查询数据:
get():
DB::table('表名')->get(); //获取所有数据
first():
DB::table('表名')->first(); //获取第一条数据
where():
DB::table('表名')->where(条件)->get(); //获取要求数据
DB::table('表名')->whereRaw(多个条件)->get(); //获取多个条件要求数据
pluck():
DB::table('表名')->pluck('字段名'); //获取结果集中指定字段
lists(指定某个键为下标):
DB::table('表名')->lists('字段名','字段名'); //获取结果集中指定字段
select():
DB::table('表名')->select('字段名','字段名',...)->get(); //返回指定字段名的值
chunk():
DB::table('表名')->chunk(数量,function(变量名){}); //查找内容分段显示
(5)聚合函数:
count(统计表记录数):
public function 方法名称(){
DB::table('表名')->count(); //返回数量
}
max(返回最大值):
public function 方法名称(){
DB::table('表名')->max('字段名'); //返回数量
}
min(返回最小值):
public function 方法名称(){
DB::table('表名')->min('字段名'); //返回数量
}
avg(返回平均数):
public function 方法名称(){
DB::table('表名')->avg('字段名'); //返回数量
}
sum(返回和):
public function 方法名称(){
DB::table('表名')->sum(); //返回数量
}
11.Laravel数据库操作 ORM
(1)ORM简介/模型的建立及查询数据:
简介:优美简洁的ActiveRecord实现,用来实现数据库操作;每个数据表中有一个与之对应的模型用于和数据表交互;
模型的建立:
namespace App;
use Illuminate\Database\Eloquent\Model;
class 模型名 extends Model{
protected $table = '表名'; //ID主键
protected $primaryKey = '主键名'; //指定主键
}
ORM查询:
all():
public function 方法名称(){
模型名称::all(); //返回集合
}
find():
public function 方法名称(){
模型名称::find(); //返回集合
}
findOrFail(根据主键查找,没有抛出异常):
public function 方法名称(){
模型名称::findOrFail(); //返回集合
}
查询构造器在ORM中的使用:
public function 方法名称(){
模型名称::get(); //返回集合
}
(2)ORM新增数据/自定义时间戳/及批量赋值:
模型新增数据(自定义时间戳):
public function 方法名称(){
new 模型名称();
模型变量->属性名称=属性值;
模型变量->save(); //返回布尔值‘
return time(); //获取时间,已转换
}
模型Create方法新增数据(批量赋值,在模型中添加批量赋值的字段):
public function 方法名称(){
模型名称::create(['变量名'=>'变量值'],...);
模型名称::firstOrCreate(['变量名'=>'变量值']); //以属性查找用户,没有则新增
模型名称::firstOrNew(['变量名'=>'变量值']); //以属性查找,没有则新建实例,需要保存则调用save方法
}
(3)ORM修改数据:
模型更新:
public function 方法名称(){
模型名称::find(主键ID);
模型变量->变量名 = '变量值'; //布尔值
}
查询语句批量更新:
public function 方法名称(){
模型名称::where(条件)->update(['变量名'=>'变量值'],...);
}
(4)ORM删除数据:
模型删除:
public function 方法名称(){
模型名称::find(主键ID);
模型变量->delete(); //布尔值
}
主键值删除:
public function 方法名称(){
模型名称::destroy(主键ID值); //影响行数
模型名称::destroy(主键ID值,...); //影响行数
模型名称::destroy([主键ID值,...]); //影响行数
}
条件删除:
public function 方法名称(){
模型名称::where(条件)->delete(); //影响行数
}
12.Laravel Blade模板引擎
简介及模板继承的使用:
简介:简单强大的模板引擎;不限制在视图中使用原生PHP代码;Blade视图页面被编译成原生PHP代码并缓存起来,除非模板文件被修改,否则不会重新编译;
继承:
理由:维护方便;编写方便;
section:(定义视图片段,可扩展)
public function 方法名称(){
return view('模板路径');
}
yield:(定义视图片段,不可扩展)
@yield
extends:
@extends('继承路径')
parent:
@section('重写路径');
@parent //父模板
内容
@stop
基础语法及include的使用:
模板输出变量:
{{变量名称}}
模板调用PHP:
{{代码}}
原样输出:
@{{变量}}
模板注释:
{{-- --}}
include使用:
@include('路径',传值);
流程控制:
if:
@if(条件)
输出
@elseif(条件)
输出
@else
输出
@endif
unless(相当于if的取反):
@unless(条件)
输出
@endunless
for:
@for(条件($i))
输出
@endfor
foreach:
@foreach(变量名称 as 变量名称)
{{变量名称->字段名}}
@endforeach
@forelse(变量名称 as 变量名称)
{{变量名称->字段名}}
@empty
输出
@endforelse
模板中的URL(常用url/route,方便):
*url(路由名称生成):
模板:{{url('路有名')}}
action(指定控制器及方法名):
模板:{{action('控制器名@方法名')}}
*route(路由别名生成):
模板:{{route('别名')}}