手记

laravel基础课程总结的笔记

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里面配置

  1. DB_HOST:服务器ip(localhost)
  2. DB_DATABASE:数据库名
  3. DB_USERNAME:账号
  4. DB_PASSWORD:密码
    二.访问数据库(导包:alt+回车)
  5. 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]);
  6. 查询构造器
    增:
    $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()//总和
  7. 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

  1. 输出变量
    {{$a}}
  2. 调用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'}}//同上

  3. 原样输出
    @{{$name}}
  4. 模板中的注释
    {{--模板中的注释无法在前台看到--}}
  5. 引入子视图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>

17人推荐
随时随地看视频
慕课网APP