Http目录是我们业务逻辑的存放点cache.php(缓存)database.php(数据库)、queue.php(队列)等CSS 、JS、IMG 等get,post,put,pathc,delete Tips: 业务逻辑不应该写在路由当中,路由只是接收参数后转发给控制器(Controller)进行处理
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(){
return 'multy2';})
Route::get('user/{id}',function($id){
return 'USER-'.$id;
}); 将name赋默认值kitty,是name变为可选项(加?)
Route::get('user/{name?}',function($name = 'kitty'){
return 'USERNAME-'.$name;
});将参数使用正则表达式来限制
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]);
DB facade实现CURD(原生SQL语句操作数据库 )
$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注入,因此传入的参数不需额外转义特殊字符1、新增一条数据(返回bool类型 新增结果)
$result = DB::table('student')->insert([
'name' => 'Toky',
'age' => 19
]);2、新增一条数据(返回int类型 新增后的主键ID)
$result = DB::table('student')->insertGetId([
'name' => '亲爱的路人',
'age' => 19
]);3、增加多条数据(注: 只能使用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
]);<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变量
{{ $name }}php代码
{{ date('Y-m-D H:i:s', time()) }} 模板中的流程控制 @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 1、 url()通过路由的名称生成url
<a href="{{ url('url') }}">url()</a>2、 action()通过制定控制器及方法名生成url
<a href="{{ action('StudentController@urlTest') }}">action()</a>3、 route()通过路由的别名生成url
<a href="{{ route('url') }}">route()</a>