Http
目录是咱们业务逻辑的存放点cache.php
(缓存)database.php
(数据库)、queue.php
(队列)等CSS 、JS、IMG
等get,post,put,pathc,delete
Tips: 业务逻辑不该该写在路由当中,路由只是接收参数后转发给控制器(Controller
)进行处理php
Route::get('basic1',function(){ return 'Hello World'; })
Route::post('basic2',function(){ return 'basic2'; })
Route::match(['get','post'],'multy1',function(){ return 'multy1'; })
Route::any('multy2',function(){html
return 'multy2';
})laravel
Route::get('user/{id}',function($id){ return 'USER-'.$id; });
将name
赋默认值kitty
,是name
变为可选项(加?
)正则表达式
Route::get('user/{name?}',function($name = 'kitty'){ return 'USERNAME-'.$name; });
将参数使用正则表达式来限制sql
Route::get('user/{name?}',function($name = 'kitty'){ return 'USERNAME-'.$name; })->where('name',[A-Za-z]+); //name可由多个字母组成 Route::get('user/{id}/{name?}',function($name = 'kitty'){ return 'USER-Id:'. $id . ' name:'.$name; })->where['id'=>[0-9]+,'name'=>[A-Za-z]+]
Route::get('user/member-center',['as' => 'center',function(){ return 'member-center'; }]);
prefix
路由前缀Route::group(['prefix' => 'member'],function(){ Route::get('user/member-center',['as' => 'center',function(){ return 'member-center'; }]); Route::any('multy2',function(){ return 'multy2'; }); });
Route::get('view',function(){ return view('welcome');//调用/laravel/resources/views/welcome.blade.php文件 });
@
控制器下的方法)@
控制器下的方法])@
控制器下的方法,'as'=>'别名'])@
控制器下的方法]) 直接在控制器里面调用view
而后return
返回便可数据库
return view(路径/模板, [待传入的变量array格式]);
例: return view('member/info', ['id'=>$id]);
django
DB facade
实现CURD
(原生SQL
语句操做数据库 )bootstrap
$result = DB::insert('insert into student(name,age) values(?,?)', ['abcd',23]);
$result = DB::select('select * from student where id < ?', [ 1002 ]);
$result = DB::update('update student set age = ? where name = ?', [ 21, 'EnzoLiu' ]);
$result = DB::delete('delete from student where name = ?', ['abcd']);
laraevl
内置函数dd
,可人性化的打印数组:dd($result);数组
SQL
注入,所以传入的参数不需额外转义特殊字符一、新增一条数据(返回bool类型 新增结果)缓存
$result = DB::table('student')->insert([ 'name' => 'Toky', 'age' => 19 ]);
二、新增一条数据(返回int类型 新增后的主键ID)
$result = DB::table('student')->insertGetId([ 'name' => '亲爱的路人', 'age' => 19 ]);
三、增长多条数据(注: 只能使用insert 返回新增结果)
$result = DB::table('student')->insert( [ ['name' => 'name1', 'age' => 31], ['name' => 'name2', 'age' => 32] ] );
//返回影响的行数 DB::table('as_admin')->where('id', 12)->update(['age' => 18]);
//字段自增3写,默认为1法 返回影响的行数 DB::table('as_admin')->where('id', 12)->increment('age', 3);
//字段自减3写,默认为1法 返回影响的行数 DB::table('as_admin')->where('id', 12)->decrement('age', 3);
//自增或自减的同时更新name字段 DB::table('as_admin')->where('id', 12)->decrement('age', 3, ['name' => '张佳']);
关键词:
delete 删除数据 truncate 清空表,并将ID自增重置为0
示例代码:
delete DB::table("表名")->where('条件')->delete(); truncate DB::table("表名")->truncate();
get - 查询多条数据结果
DB::table("表名")->get(); DB::table("表名")->where(条件)->get();
pluck - 查询指定字段数据
DB::table("表名")->pluck("字段名"); DB::table("表名")->where(条件)->pluck("字段名");
lists - 和 pluck 效果相同
DB::table("表名")->lists("字段名"); DB::table("表名")->lists("字段名1","字段名2");
select - 指定要查询的字段
DB::table("表名")->select("id","name")->get();
结果分块:若是你须要操做数千条数据库记录,能够考虑使用 chunk
方法。这个方法每次只取出一小块结果传递给 闭包 处理。例如,一次处理整个 users
表中的 100
个记录:
DB::table('users')->orderBy('id')->chunk(100, function ($users) { foreach ($users as $user) { // } });
你能够从 闭包 中返回 false
来阻止进一步的分块的处理:
DB::table('users')->orderBy('id')->chunk(100, function ($users) { // Process the records... return false; });
DB::table('as_admin')->select('id','name','age')->count(); //返回记录数 DB::table('as_admin')->select('id','name','age')->max('age'); //最大值,min同理 DB::table('as_admin')->select('id','name','age')->avg('age'); //返回平均值 DB::table('as_admin')->select('id','name','age')->sum('sum'); //返回指定字段数据
建立Model
类型,方法里面声明两个受保护属性:$table
(表名)和$primaryKey
(主键)
<?php
namespace App; use Illuminate\Database\Eloquent\Model; class Student extends Model{ protected $table = 'student'; protected $primaryKey = 'id'; }
all: 经过orm
获取全部数据
$result = Student::all();
find: 经过主键返回指定的数据
$result = Student::find(1001);
findOrFail: 经过主键返回指定的数据 未查找到到则抛出异常
$result = Student::findOrFail(1001);
获取符合条件的数据
$student = Student::where('age', '<', 20)->get();
分段式(分页)获取数据递交给闭包函数循环处理
Student::chunk(2, function($student) { var_dump($student); });
查询构造器之聚合函数
$result = Student::count();
创建model
类 (app\Student.php
)
protected $table = 表名; protected $promaryKey = 主键名; public $timestamps = false; //是否开启时间戳自动调节 //使用时间戳存入数据库 protected function getDateFormat() { return time(); } //将数据库里的时间戳取出时不被转换为日期 protected function asDatetime($val) { return $val; } protected $fillable = ['name', 'age']; //容许批量赋值的字段 白名单设置 protected $guarded = ['aa', 'bb']; //不容许批量赋值的字段 黑名单设置
$fillabel
是为了防止注入攻击,好比有的用户可能在表单中注入了一些别的信息更改数据库中的其余内容,所以咱们要定义哪些数据是能被修改的,这里就是’$fillabel
’包含的内容才可以被修改.而$hidden
包含的内容则是指存储时这些信息会被加密存储,这样即便数据库泄露出去,信息也不会那么容易直接被读取。
$student = new Student(); $student -> name = 'stu1'; $student -> age = 20; $student -> save();
$student = new Student(); $result = $student -> create([ 'name' => 'create', 'age' => 30 ]); //firstOrCreate 查找数据并返回,若是不存在则插入该条数据并返回 $result = Student::firstOrCreate([ 'name' => 'aj', 'age' => 32 ]); //firstOrNew 查找数据并返回,若是不存在则返回该类的对象,调用save才得以保存 $result = Student::firstOrNew(['name' => 'make']); $result = $result->save(); dd($result);
经过模型更新数据 (最后返回bool
类型,单条数据是否修改为功)
$student = Student::find(1051); $student->name = 'aj2'; $result = $student->save();
结合查询语句批量更新 (返回int
类型 受影响行数)
$result = Student::where('id', '>', 1050) ->update([ 'name'=>'adj', 'age'=>32 ]);
根据指定条件删除数据
//1. $student = Student::find(1001); $student ->delete(); //2. Student::destroy(1001); Student::destroy(1001,1002); Student::destroy([1001,1002]); //3. Student::where('id', '>', 1004)->delete();
<body>
<div class="header"> @section('header') 头部 @show </div> <div class="main"> <div class="sidebar"> @section('sidebar') 侧边栏 @show </div> <div class="content"> @yield('content','主要内容区域'); </div> </div> <div class="footer"> @section('footer') 底部 @show </div> </body>
section
是用来定义一个视图片断的
yield
是用来展现某个指定的section里所表达的内容 能够将其假设为一个占位符用子模版去实现它
区别:
在view
中,模板继承: 用@extends('模板名')
模板重写:
@section('重写部分的名字')
重写的内容
@stop
@yield
的模板重写也是同样的用法。
php
变量php
代码 模板中的流程控制 @if @unless @for $foreach $forelse
@if($name == 'EnzoLiu') i'm EnzoLiu @elseif($name == 'jeck') i'm jeck @else who am i? @endif
@unless($name != 'EnzoLiu') 我是EnzoLiu @else 我不是EnzoLiu @endunless
@for($i=0; $i<10; $i++) {{ $i }} @endfor
@foreach($res as $key => $value) {{ $key }}<br>{{ $value }} @endforeach
释: $res若是有值则运行 $obj->name 代码块, 若是为空则显示 null
@forelse($res as $obj) {{ $obj->name }}<br> @empty null @endforelse
一、 url()经过路由的名称生成url
<a href="{{ url('url') }}">url()</a>
二、 action()经过制定控制器及方法名生成url
<a href="{{ action('StudentController@urlTest') }}">action()</a>
三、 route()经过路由的别名生成url
<a href="{{ route('url') }}">route()</a>