开发环境:

    php7.0

安装包从官网下载,解压即可

目录结构:

    app:应用程序的核心代码

    app/http:业务逻辑代码

    app/http/controller:controller代码块

    bootstrap:框架的启动和框架自动加载配置的文件夹

    config:包含所有应用程序的配置文件 

    database:数据库迁移额填充文件

    public:包含入口和项目的静态资源文件

    resources:视图、原始的资源文件

    resources/views:视图层

    storage:编译后的模板文件,缓存日志等

    tests:单元测试目录

    vendor:composer依赖的模块,第三方库


    路由

    将用户的请求转发给相应的程序进行处理

    作用:建立url和程序之间的映射

    请求类型:get、post、put、patch、delete

    基本路由:

    //get
    Route::get('url',function(){
        return 'hello world';
    });
//post
Route::post('url',function(){
    return 'hello post';
});

    多请求路由:

    //mactch指定响应方式
Route::mactch(['get','post'],'url',function(){
return 'hello match';
});
//any响应所有方式
Route::any('url',function(){
return 'hello any';
})

    路由参数:

    //传入get参数
Route::get('user/
',function($id){
return $id;
});
//默认get参数
Route::get('user/{id?}',function($id=10){
return $id;
})
//正则表达式限制参数
Route::get('user/
/{name?},function($id,$name='labmem'){
return $name;
}')->where(['id'=>'[0-9]+','name'=>'[A-Za-z]+']);

    路由别名:

    Route::get('user/name',['as'=>'name',function(){
return 'user name';
}]);

    路由群组:

Route::group(['prefix'=>'labmem'],function(){
Route::get('user/name',['as'=>'name',function(){ //URL:labmem/user/name
return route('name');
}]);

Route::any('url',function(){        //URL:labmem/url
    return 'hello url';
});

});

    路由中输出视图:

    Route::get('view',function(){
return view('welcome');
});

    路由关联控制器Controller:

Route::get('user/index','UserController@index');

Route::get('user/index',['uses'=>'UserController@index']);

//别名:
Route::get('user/index',[
'uses'=>'UserController@index',
'as'=>'userindex'
]);
//可以直接传入参数到controller方法中
Route::any('user/
',['uses'=>'UserController@index']);

public function index($id){
return $id;
}


    数据库操作:

            连接数据库:在.env中的DB配置相应的信息
            laravel提供了3种数据操作方式:

                 首先要引入DB类

                use Illuminate\Support\Facades\DB;

            一、DB facade(sql语句操作)

//新增
$bool=DB::insert('insert into user(name,age) values(?,?)',[$name,$age]);

//更新
$num=DB::update('update user set age=? where name=?',[$age,$name]);

//查询
$array=DB::select('select * from user');

//删除
$num=DB::delete('delete from user where id=?',[$id]);

                二、查询构造器操作数据库

                        查询构造器使用PDO参数绑定,以保护应用程序免于SQL注入,因此传入的参数不需额外转义特殊字符

                        基本满足所有的数据库操作,而且在所有支持的数据库系统上都可以执行

                        与tp5类似

//使用查询构造器新增数据(insert)
$bool=DB::table('user')->insert(['name'=>$name,'age'=>$age]); //返回bool值
$num=DB::table('user')->insertGetId(['name'=>$name,'age'=>$age]); //返回自增ID

//使用查询构造器更新数据(update,increment,decrement)
$num=DB::table('user')->where('id',$id)->update(['age'=>$age]); //返回受影响行数
$num=DB::table('user')->where('id',$id)->increment('age'); //id的age增1,返回受影响行数
$num=DB::table('user')->increment('age',3); //age自增3
自减是decrement()
$num=DB::table('user')->where('id',$id)->decrement('age',3,['name'=>$name]); //id的age自减3并且修改name

//使用查询构造器删除数据(delete,truncate)
$num=DB::table('user')->where('id','>=',$id)->delete(); //删除id>=的记录,返回删除的行数
DB::table('user')->truncate(); // 整表删除,不返回任何东西,很危险!!!

//使用查询构造器查询数据(get、first、select、where、chunk、pluck)
$array=DB::table('user')->get(); //获取表所有数据并返回
$array=DB::table('user')->first(); //获取结果集的第一条数据并返回
$array=DB::table('user')->where('id>=? and age>?',[$id,$age])->get(); //多条件查询
$array=DB::table('user')->pluck('name'); //返回所有name字段值的数组
$array=DB::table('user')->select('id','name','age')->get(); //只返回这三个字段的数据
DB::table('user')->chunk(1000,function($users){
var_dump(#users);
if(条件)

}); //每次查1000条查完结束

//查询构造器中的聚合函数(count、avg、max、sum、min)
$num=DB::table('user')->count(); //返回表的记录数
$max=DB::table('user')->max('age'); //返回字段(age)中最大的值
$min=DB::table('user')->min('age'); //返回字段(age)中最小的值
$avg=DB::table('user')->avg('age'); //返回字段(age)的平均值
$sum=DB::table('user')->sum('age'); //返回字段(age)的和

                

                三、Eloquent ORM

                        Eloquent ORM 是真正体现Laravel“优雅”的设计,是“让开发者真正关注业务而不是底层代码”

                        每个数据表都有一个与之对应的“模型model” 用于和数据表的交互

            需要引用use Illuminate\Database\Eloquent\Model;并继承Model

            指定表名:protected $table='user';

            指定主键(id):protected $primaryKey='id';

//控制器需要引入需要的模型然后
//ORM查询数据
$users=User::all(); //返回user所有值的User对象
$user=User::find(123); //返回一个User对象
$user=User::findOrFail(123); //根据主键查找,如果没找到就报错
//查询构造器在ORM中的使用
$users=User::get();
$user=User::where('id','>','123')->orderBy('age','desc')->first();
User::chunk(2,function($users){
var_dump($users);
});
$num=User::count();
$max=User::max('age');

//ORM新增数据、自定义时间戳及批量赋值
$user=new User();
$user->name=$name;
$user->age=$age;
$bool=$user->save();//返回bool值

默认开启时间戳created_at/updated_at,关闭在模型类写
public $timestamps=false;
设置Unix时间戳:
protected function getDateFormat(){
return time();
}
设置取出非格式化Unix时间戳:
protected function asDateTime($val){
return $val;
}

//使用模型的Create方法新增数据
    //在模型中添加允许批量赋值的字段
    protected $fillable=['name','age'];
    //在控制器使用create
    $user=User::create(
        ['name'=>$name,'age'=>$age]
    );
    //指定不允许批量赋值的字段
    protected $guarded=[];

    //firstOrCreate();通过字段查找,如果没有则新增并取得新的实例
    $user=User::firstOrCreate(
        ['name'=>$name]
    );

    //firstOrNew();通过字段查找,如果没有则创建新的实例,若需要保存,则自行调用save
    $user=User::firstOrNew(
        ['name'=>$name]
    );
    $bool=$user->save();

//ORM修改数据
//通过模型更新数据
$user=User::find($id);
$user->name=$name;
$bool=$user->save();

//结合查询语句批量更新
$num=User::where('id','>',$id)->update(
    ['age'=>$age]
);

//ORM删除数据
//通过模型删除
$user=User::find($id);
$bool=$user->delete();

//通过主键删除
$num=User::destroy($id);    //可以删除多条destroy($id1,$id2)或者destroy([$id1,$id2])

//删除指定条件的数据
$num=User::where('id','>',$id)->delete();


    Blade模板引擎

            模板继承:在视图层创建一个模板供其他模板继承

            在父模板中使用:

@section('')
@show

@yield('','')
来定义继承者修改的地方

            

            在子模板中使用

@extends('')来继承父模板,直接写view下的路径

重写section:
@section('')
XXXXX
@stop

重写yield:
还是@section('')
xxxx
@stop

    @section和@yield的区别 :



    @section既可以单独显示父模板的默认内容,也可以单独显示子模板的新内容,通过@parent还可以同时显示父子模板中的内容 ;

    而@yield只能显示其中一个,子模板不定义,就用父模板默认的,子模板定义,父模板的内容会被覆盖,通过@parent也不能显示。


            模板的基础语法及include的使用

                    1、模板中输出php变量

                        在控制器中调用视图层view()可传值,和tp5相似

return view('index',[
'name'=>$name
]);

                        在模板中可使用{{$name}}来输出参数

                    2、模板中调用php代码

                        {{ time() }}    //输出Unix时间戳

                        {{ date('Y-m-d H:i:s',time()) }}    //格式化时间戳

                        {{ isset($name) ? $name : 'default' }}    ==    {{ $name or 'default' }}

                        。。。

                    3、原样输出

                        @{}

                    4、模板中的注释

                        {-xxxxxxx-}

                    5、引入子视图 include

                        @include('')    //views下路径

                        可传值,例:

                        @include('index.message',['message'=>'错误信息'])

                    6、流程控制:if、unless、for、foreach

                    //IF

                        @if($name=='labmem')

                                我是labmem

                        @elseif($name=='lty')

                                我是lty

                        @else

                                我是谁?

                        @endif

                    //unless等于if的取反

                        @unless($id==1)

                            xxx

                        @endunless

                     //for

                        @for($i=0;$i<10;$i++)

                            xxx

                        @endfor

                    //foreach

                        @foreach($users as $user)

                           <p> {{$user->name}}</p>

                        @endforeach

                    //forelse    如果有数据就遍历

                        @forelse($users as $user)

                             <p>{{ $user->name }}</p>

                        @empty

                            <p>没有数据</p>

                        @endforelse

                    7、模板中的URL

                        {{url('url')}}    //通过路由的名字生成URL

                        {{action('UserController@index')}}    //指定控制器和方法名生成URL

                        {{route('url')}}    //通过路由别名生成URL


基础篇完。。。。

下一篇:laravel框架整理二