laravel框架
下载地址:http://www.golaravel.com/download
路由
//get,post
Route::match(['post','get'],'name',function(){
return view('view');
});
//所有类型的路由都可以访问
Route::any('name/{id}',function(4id){
return view(view);
});
//传id
Route::get('user/{id}',function($id){
return 'user-id-'.$id;
});
//id和name
Route::get('user/{id}/{name}',function($id,$name){
return 'user-id-'.$id.'-name-'.$name;
})->where(['id'=>'[0-9]+','name'=>'[A-Za-z]+']);
//别名输出url
Route::get('topc/login',['as'=>'login',function(){
return route('login');
}]);
//prefix:路由群组增加了前缀topc,middleware:进入auth路由中间件
Route::group(['prefix'=>'topc','middleware' => 'auth'],function(){
})
//name可为空,为空附初值
Route::get('user/name?',function($name=null){
return route('login');
}]);
Route::post('路由名',‘控制器文件夹名\控制器类名@控制器里的方法名’);
控制器
namespace:此文件的上级目录中间用\
//访问view
方法内用return view('viewname')
//访问view带参数
return view(‘viewname',['参数1name'=>'value1','参数2name'=>'value2']);
blade模板得到参数{{value1}}
//访问模型
模型名::方法名;
模型在app目录底下创建
数据库(返回值中$num:条数,$bool:布尔类型,$obj:对象)
一.连接数据库 config\database.php(prefix表前缀):.env里面配置
- DB_HOST:服务器ip(localhost)
- DB_DATABASE:数据库名
- DB_USERNAME:账号
- DB_PASSWORD:密码
二.访问数据库(导包:alt+回车) - DB facade(原始查找)(var_dump()输出查询返回)
查:DB::select('select * from Student');
增:$bool=DB::insert('insert into Student(name,age,sex) values (?,?,?)',['111',222,33]);
改:$num=DB::update('update Student set name=?,age=?,sex=? where id=?',['woaini',18,66,1]);
删:$num=DB::delete('delete from Student where id=?',[1]); - 查询构造器
增:
$bool=DB::table('表名')->insert(['name'=>'..','age'=>'..']);
DB::table('表名')->insertGetId('name'=>'..','age'=>'..');(返回新增数据的id)
$bool=DB::table('表名')->insert(
['name'=>'..','age'=>'..'],
['name'=>'..','age'=>'..'])(增加多条数据)
改:
$num=DB::table('表名')->where('id','..')
->update(['age'=>'..']);
$num=DB::table('表名')->increment('age',3);//age增加3
$num=DB::table('表名')->decrement('age',3);//age减3
$num=DB::table('表名')->increment('age',3,['name'=>'..']);
删:$num=DB::table('表名')->where('id',..)->delete();
$num=DB::table('表名')->where('id','=',..)->delete();
DB::table('表名')->truncate()//清空表
查:
DB::table('表名')->get();//返回全部查询到的数据
DB::table('表名')->first();//返回查询到的随机一条数据加上(
->orderBy('id','desc')desc倒叙可以输出查询到第一条数据)
DB::table('表名')->whereRaw('id>? and age>?',[1,10])->get();//where多条件查询
DB::table('表名')->where('id',1)->get();//条件查询
DB::table('表名')->pluck('name');//只返回name字段
DB::table('表名')->lists('name',‘id’);//设定某个键作为下
标
DB::table('表名')->select('id','name','age')->get();指定的列
没有格式可以在上面加上echo <pre>
DB::table('表名')->chunk(2,function($students){
var_dump($student);
if(){
return false;
}
})//可以一次查询两个数组条件停止的话可以return false
聚合函数:
DB::table('表名')->count()//数据条数
DB::table('表名')->max()//最大数
DB::table('表名')->min()//最小数
DB::table('表名')->avg()//平均数
DB::table('表名')->sum()//总和 - Eloquent ORM(返回对象也是模型)
模型建立:
namespace APP
use Illuminate\Database\Eloquent\Model;
class 类名 extends Model{
protected $table='表名';
protected $primaryKey='主键';
//关闭时间戳
public $timestamps=false;
//自动维护时间戳(数据库如果用的是int类型,unix时间戳)
public $timestamps=true;
protected function getDateFormat(){
return time();
}
//自己设置时间格式
protected function asDateTime($val){
return $val;
}
}
//得到时间戳生成的unix时间进行格式化
echo date('Y-m-d H:i:s',value)
查询
Student::all();//表的所有记录
student::find(1);//主键是1
student::findOrFail(10);//根据主键查找,查找不到抛出异常
student::get();
student::chunk(2,function($student){
var_demp($student)
});
聚合函数
student::count()//记录数
student::max()//最大值
student::min()//最小值
student::avg()//平均数
student::sum()//总数
增:
1.$student=new student();
$student->name='..';
$bool=$student->save();
模型中允许批量赋值字段
protected $fillable=['name','age'];
模型中不允许批量赋值字段
protected $guarded=[];
批量进行赋值:
2.$obj=student::create(
['name'=>'...','age'=>..]
);
3.firstOrCreate查找属性是..的如果有则不进行添加,如果没有符合 条件的则进行添加语句
$obj=student::firstOrCreate(
['name'=>'..']
)
4.以属性查找用户,没有则建立新的实例,需要保存则执行save()
$stu=student::firstOrNew(
['name'=>'..']
)
$bool=$stu->save();
改:
1.通过模型更新数据
$stu=student::find(id);
$stu->name='..';
$stu->age='..';
$bool=$stu->save();
2.结合查询语句批量更新
$num=student::where('id','>',..)->update(['age'=>..]);
删:
1.通过模型删除
$stu=student::find(..);
$bool=$stu->delete();
2.通过主键删除
$num=student::destroy(..);
(..处可以写多个主键,也可以写成数组[..,..])
3.指定条件的数据
$num=student::where(‘id’,'>',..)->delete();
Blade模板引擎
@section:定义视图变量,可以定义视图变量还可以有内容,还可以被子模板扩展
@yield:展示指定section里面的内容,相当于一个占位符,用子模板实现它,不可扩展,因为在视图中只声明定义了一个变量,无内容
关于继承例:
父类:
@section('a')
father
@show
@yield('v','主要内容部分')
子类(子类的东西加入父类):
@extends('父模板路径,之间用.')加上@parent不覆盖父类中的东西,一起显示,@yield只能被覆盖@parent无效
@section('a')
@parent
son
@stop
@section('v')
son
@stop
- 输出变量
{{$a}} -
调用PHP代码
{{time()}}//输出unix时间
{{date('Y-m-d H:i:s')}}//输出格式化后的时间
{{in_array('$value','$arr')?'true':'false'}}//如果$value在arr数组里有值则输出true,否则输出false
{{var_dump($arr)}}//php打印函数
{{isset($name)?$name:'default'}}//如果有变量$name则输出$name,否则输出默认值default
{{$name or 'default'}}//同上 - 原样输出
@{{$name}} - 模板中的注释
{{--模板中的注释无法在前台看到--}} - 引入子视图include(也可以传值)
@include('目录')
流程控制:
1.@if(条件)
@elseif(条件)
@else
@endif
2.@if(in_array($value,$arr))
@else
@endif
3.@unless(条件)//if的取反
@endunless
4.@for()
@endfor
5.@foreach($arr as $arr)
@endforeach
6.@forelse()//遍历出来如果有则输出没有则输出empty下面的
@empty
@endforelse
URL
{{url('路由名')}}
{{action('控制器名@方法名')}}
{{route('路由中的别名')}}
框架的系统时间修改:config/app里面的'timezone' => 'UTC',改为'timezone' =>
'Asia/Shanghai'。
分页:
controller:student::paginate(数据条数);
只需要调用$student->render();
<div class="pull-right">
{{ $students->render() }}
</div>