1.路由设置
// 基础路由
Route::get('show1', function() {
return 'get测试成功';
});
Route::post('show2', function() {
return 'post测试成功';
});
// 多请求路由
Route::match(['get','post'], 'show3', function() {
return 'match测试成功';
});
Route::any('show4', function(){
return 'any测试成功';
});
// 参数 + 正则表达式验证 用例
// params[1] 1-18位 字母 数字 下划线 (必须存在)
// params[2] 1-5位 数字 (可选, 默认为空)
Route::get('user/{params}/{id?}', function($params, $id = null) {
return '你的参数是:'.$params.'<br>你的ID是:'.$id;
})->where(['params' => '\w{1,18}','id' => '\d{1,5}']);
// 路由别名
Route::any('home/userlogin', ['as' => 'login', function() {
return route('login');
}]);
// 路由群组
Route::group(['prefix' => 'member'], function() {
// http://127.0.0.1/show1
// http://127.0.0.1/member/show1
Route::get('show1', function() {
return '路由数组 - get测试成功';
});
Route::any('show4', function(){
return '路由数组 - any测试成功';
});
});
// 路由中输出视图 (不推荐 视图操作应该在Controller里面完成)
Route::get('view',function() {
return view('welcome');
});
路由和控制器绑定。
Route::请求方式('请求url',控制器名称@控制器下的方法)
Route::请求方式('请求url',[‘usre’=>控制器名称@控制器下的方法])
别名:
Route::请求方式('请求url',[‘usre’=>控制器名称@控制器下的方法,‘as’=>'别名'])
带参数
Route::请求方式('/demo/{id}',[‘usre’=>控制器名称@控制器下的方法])
视图 - 使用模板
直接在控制器里面调用view然后return返回即可
return view(路径/模板, [待传入的变量array格式]);
例: return view('member/info', ['id'=>$id]);
视图模板格式
注意: 一个控制器(Controller)对应一个视图(文件夹)
例: (控制器) MemberController.php (视图文件夹)member
命名: 模板名.blade.php
例: info.blade.php
在模板中调用注册后的变量(类似Smarty中的assign)
格式: {{$变量名}}
例: {{$id}}
Model - 模型
Laravel\app\Member.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Member extends Model{
public static function getMember(){
return 'My name is EnzoLiu';
}
}
Controller调用:
<?php
namespace App\Http\Controllers;
use App\Member;
class MemberController extends Controller{
public function info($id = null){
return Member::getMember();
}
}
?>
连接数据库
1、找到数据库的配置 config/database.php
'default' => env('DB_CONNECTION', 'mysql'), //查看默认数据库是否正确
//看mysql的具体配置是否正确
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
2、找env文件
Laravel .env 文件
修改配置
DB_HOST=localhost
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=
数据库操作 - 查询构造器 新增数据
public function query1(){
// 新增一条数据(返回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]
]
);
dd($result);
}
//使用查询构造器更新数据,减少sql注入的风险
public function query2(){
// 修改一条数据(带条件) 返回bool类型(受影响行数)
$result = DB::table('student')
->where('id', 1023)
->update(['name'=>'query2','age'=>20]);
// 自增并修改数据 increment 返回bool类型(受影响行数)
$result = DB::table('student')
->where('id', 1023)
->increment('age', 2, ['name' => 'query_test2']);
// 自减并修改数据 decrement 返回bool类型(受影响行数)
$result = DB::table('student')
->where('id', 1023)
->decrement('age', 2, ['name' => 'query2']);
//使用查询构造器更新数据,减少sql注入的风险
DB::table('as_admin')->where('id', 12)->update(array('age' => 18)); //返回影响的行数
DB::table('as_admin')->where('id', 12)->increment('age', 3); //字段自增3写,默认为1法 返回影响的行数
DB::table('as_admin')->where('id', 12)->decrement('age', 3); //字段自减3写,默认为1法 返回影响的行数
DB::table('as_admin')->where('id', 12)->decrement('age', 3, array('name' => '张佳宁')); //自增或自减的同时更新name字段
dd($result);
}
数据库操作 - 查询构造器 删除数据
public function query3(){
// 返回int类型 (受影响行数)
$result = DB::table('student')
->where('id',1024)
->delete();
//删除数据
$num = DB::table('student')->where('sex','0')->delete(); //返回删除的行数
$num = DB::table('student')->where('age','>=','22')->delete(); //注意where的参数设置
//清空整张表
DB::table('student')->truncate();
dd($result);
}
数据库操作 - 查询构造器 查询数据
public function query4(){
// get 获取所有符合条件的数据
// $result = DB::table('student')
// ->where('id', '<', '1005')
// ->get();
// first 获取符合条件的第一条数据
// $result = DB::table('student')
// ->orderBy('id', 'desc')
// ->where('age', '<=', '20')
// ->first();
// whereRaw 多条件查询
// $result = DB::table('student')
// ->whereRaw('sex = ? and age < ? and id < ?', [10, 20, 1020])
// ->get();
// pluck 返回结果集中指定字段 pluck(字段, [作为下标的字段])
// 注意: lists和pluck用法完全一致,但lists在5.3版本中已被弃用,故做了解
// $result = DB::table('student')
// ->pluck('name','id');
// select 返回指定的字段
// $result = DB::table('student')
// ->select('id', 'name', 'age')
// ->get();
// chunk 分段(分页)循环取数据
$result = DB::table('student')
->chunk(2, function($student){
print_r($student);
}
);
// dd($result);
}
数据库操作 - 查询构造器 聚合函数
public function query5(){
// count 查询数据条数
// $result = DB::table('student')->count();
// max 取最大值
// $result = DB::table('student')->max('age');
// min 取最小值
// $result = DB::table('student')->min('age');
// avg 取平均数
// $result = DB::table('student')->avg('age');
// sum 求和
$result = DB::table('student')->sum('age');
var_dump($result);
}
数据库操作 - Eloquent ORM 查询数据
1.创建Model类型 方法里面声明两个受保护属性:$table(表名)和$primaryKey(主键)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Student extends Model{
protected $table = 'student';
protected $primaryKey = 'id';
}
?>
2.Controller里面以 类名::方法 (静态方法)的风格进行操作数据库
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use App\Student;
class StudentController extends Controller{
public function orm1() {
echo '<pre>';
// all 通过orm获取所有数据
// $result = Student::all();
// find 通过主键返回指定的数据
// $result = Student::find(1001);
// findOrFail 通过主键返回指定的数据 未查找到到则抛出异常
// $result = Student::findOrFail(1001);
// 获取符合条件的数据
// $student = (Student::where('age', '<', 20)->get())['tables'];
// 分段式(分页)获取数据递交给闭包函数循环处理
// Student::chunk(2, function($student) {
// var_dump($student);
// });
// 查询构造器之聚合函数
$result = Student::count();
dd($result);
}
}
数据库操作 - Eloquent ORM 增加数据
1.建立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']; //不允许批量赋值的字段 黑名单设置
public function orm2() {
// 一、通过模型新增数据(涉及到自定义时间戳)
$student = new Student();
$student -> name = 'stu1';
$student -> age = 20;
$student -> save();
// 二、使用模型的create方法新增数据(涉及到批量赋值)
// $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);
}
数据库操作 - Eloquent ORM 修改数据
1.建立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']; 不允许批量赋值的字段 黑名单设置
StudentController.php
public function orm3() {
// 通过模型更新数据 (最后返回bool类型 单条数据是否修改成功)
// $student = Student::find(1051);
// $student->name = 'aj2';
// $result = $student->save();
// 结合查询语句批量更新 (返回int类型 受影响行数)
$result = Student::where('id', '>', 1050)
->update([
'name'=>'adj',
'age'=>32
]);
}
数据库操作 - Eloquent ORM 删除数据
1.建立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']; 不允许批量赋值的字段 黑名单设置
StudentController.php
public function orm4() {
// 通过模型删除数据 (成功返回true 失败报错)
// $result = Student::find(1050)->delete();
// 通过主键值删除数据 (返回int类型 受影响行数)
// $result = Student::destroy(1023, 1022);
// 通过指定条件删除数据 (返回int类型 受影响行数)[提示:多参数使用whereRaw]
$result = Student::where('id',1021)->delete();
}
Blade模板引擎 yield section parent stop show extends
模板引擎(section1.blade.php)
@extends('layouts')
{{-- yield --}}
{{-- extends --}}
{{-- section --}}
{{-- parent --}}
{{-- stop --}}
{{-- show --}}
@section('content')
content
@stop
@section('footer')
@parent
footer
@stop
模板 (layouts.blade.php)
<div class="main">
<div class="content">
@yield('content', '主要内容区域')
</div>
</div>
<div class="footer">
@section('footer')
底部
@show
</div>
Blade模板引擎 基础语法及include的使用
@section('footer')
{{-- footer --}}
{{-- 1.模板中输出php变量 --}}
{{-- {{ $testName }} --}}
{{-- 2.模板中执行php代码 --}}
{{-- {{ date('Y年m月d日 H时i分s秒', time()) }} --}}
{{-- 3.模板中强制输出 @{{ $name }} 字符串 --}}
{{-- @{{ $age }} --}}
{{-- 4.注释格式 --}}
{{-- 5.子视图引用 include --}}
@include('common1', ['message'=>'hello world'])
@stop
Blade模板引擎 流程控制 if unless for foreach forelse
@section('footer')
{{-- 流程控制 --}}
{{-- if ifelse else endif --}}
{{-- @if($name == 'EnzoLiu')
i'm EnzoLiu
@elseif($name == 'jeck')
i'm jeck
@else
who am i?
@endif --}}
{{-- unless(if反向) --}}
{{-- @unless($name != 'EnzoLiu')
我是EnzoLiu
@else
我不是EnzoLiu
@endunless --}}
{{-- for 循环 --}}
{{-- @for($i=0; $i<10; $i++)
{{ $i }}
@endfor --}}
{{-- foreach 数组遍历 --}}
{{-- @foreach($res as $key => $value)
{{ $key }}<br>{{ $value }}
@endforeach --}}
{{-- forelse 循环(特殊) --}}
{{-- 释: $res如果有值则运行 $obj->name 代码块, 如果为空则显示 null --}}
{{-- @forelse($res as $obj)
{{ $obj->name }}<br>
@empty
null
@endforelse --}}
@stop
Blade模板引擎 模板中的URL(url action route)
@section('footer')
{{-- url - 通过路由名字生成url --}}
<a href="{{ url('url') }}">test - 1</a><br>
{{-- action - 通过指定控制器和方法名生成url --}}
<a href="{{ action('StudentController@urltest') }}">test - 2</a><br>
{{-- route - 通过别名生成url --}}
<a href="{{ route('u') }}">test - 3</a>
@stop
Controller之Request
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class StudentController extends Controller{
public function request1(Request $request) {
// $request->input 接受指定参数(name) 如果不存在返回null
// echo $request->input('name', 'null');
// $request->has 判断指定参数是否存在 存在返回true 不存在返回false
// if($request->has('name')) {
// echo $request->input('name');
// }else{
// echo 'name参数为空';
// }
// $request->all 返回所有的参数(array类型)
// $res = $request->all();
// dd($res);
// $request->method 返回访问类型
// echo $request->method();
// $request->isMethod 判断是否为指定请求类型(不区分大小写) 是为true 否则为false
// if($request->isMethod('GET')) {
// echo 'yes';
// }else{
// echo 'no';
// }
// $request->ajax 判断是否为ajax请求 是为true 否则为false
// $res = $request->ajax();
// var_dump($res);
// $request->is 判断是否为指定路由
// $res = $request->is('User/*');
// var_dump($res);
// $request->url 获取当前的url
$res = $request->url();
echo $res;
}
}
?>
Controller之Session 上
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
class StudentController extends Controller{
public function session1(Request $request) {
// 开启session: (中间件 - 路由群组方式)
Route::group(['middleware'=>'web'], function() {
Route::get('session1', 'StudentController@session1');
Route::get('session2', 'StudentController@session2');
});
// session的三种用法:
// 1.HTTP request session()
// $request->session()->put('pwd', 'admin888');
// echo $request->session()->get('pwd');
// 2.session()
// session()->put('pwd', 'admin123456');
// echo session()->get('pwd');
// 3.session::method()
// Session::put('pwd', '123456');
// Session::get(name, [default (String)])
// echo Session::get('pwd2', 'default');
}
}
?>
// 以数组的形式存储数据
// Session::put(['name'=>'liuzhe', 'age'=>'21', 'sex'=>'m']);
// 把数据放到Session的数组中
// Session::push('name2', 'aaa');
// Session::push('name2', 'bbb');
// 取出相关session数据并删除
// $res = Session::pull('sex', 'default');
// 取出session中所有数据
// $res = Session::all();
// 判断session中是否存在某个值
// $res = Session::has('age')?'存在':'不存在';
// 删除session中指定的值
// Session::forget('name');
// 清空session
// Session::flush();
// 暂存数据session(访问一次后就自删)
// Session::flash('temp', 'test.');
//保存信息
//session()->save();
网友评论