Laravel基础(路由、数据库、MVC、模板)

1、phpstorm对laravel的支持:http://www.cnblogs.com/yeanzhi/p/4231181.html

2、路由:
    2.1 常规请求
        get请求
        Route::get('test',function(){})
        post请求
        Route::post('test',function(){})
        指定响应多个请求
        Route::match(['get','post'],'test',function(){})
        响应所有http请求
        Route::any('more',function(){}) 
    2.2路由参数(xxx.com/user/12)
        Route::get('user/{id}',function($id){
            return "User-".$id;
        });
        Route::get('user/{name?}',function($name){
            return "User-".$name;
        });
    2.3 路由正则匹配
        单个参数
        Route::get('user/{name?}',function($name){
            return "User-".$name;
        })->where('name','[A-Za-z]+');
        多个参数
        Route::get('user/{id}/{name?}',function($id,$name){
            return "User-id".$id.'-name-'.$name;
        })->where(['id'=>'[0-9]+','name'=>'[A-Za-z]+']);
    2.4 路由别名    
        Route::get('user/member-center',['as'=>'center',
        function(){
            return route('center'); //路由改了,不影响别名
        }])
    2.5 路由群组
        Route::get(['prefix'=>'member'],function(){
            Route::get('user/test',function(){});
            Route::get('vote/test',function(){});
        })
        访问(带前缀member):
            xxx.com/member/user/test
            xxx.com/member/vote/test
    2.6 路由中输出视图
        Route::get('view',function(){
            return view('welcome'); 
            //resources/views/welcome.blade.php
        });
    2.7 路由关联控制器
        //关联MemberController下的info()
        2.7.1 Route::get('member/info','MemberController@info');
        2.7,2 别名   
        Route::get('member/info',[
        'uses'=>'MemberController@info',
        'as'=>'memberinfo' //别名
        ]);
        2.7.3 参数绑定
        Route::get('member/{id}','MemberController@info');
        在MemberController的info中绑定$id,function info($id){}
        2.7.4 参数匹配限制
        Route::get('member/{id}','MemberController@info')
        ->where('id','[0-9]+');//同样多个用数组

3、视图(resources/views/xxx.php(xxx.blade.php:这是laravel默认))
    public function info(){
        return view('xxx',['param1'=>1,'param2'=>2]);
    }
    xxx.php/xxx.blade.php:
    {{param1}}、{{param2}}

4、模型(默认在app目录下,继承Model):
    namespace App;
    use Illuminate\Database\Eloquent\Model;
    class Member extends Model{
        public static function getMember(){
            return 'member name is seven';
        }
    }

5、数据库
    5.1 新建数据表与连接数据库
        config/database.php
        .env

    5.2 使用DB facade实现CRUD
        5.2.1 查询
        $studentsArr = DB::select("select * from student");
        $studentsArr = DB::select("select * from student where id > ? ",[1]);
        5.2.2 添加
        $bool = DB::insert('insert into student(name,age)VALUES 
        (?,?)',['seven2',18]); //防止sql注入,返回布尔值
        5.2.3 修改
          $num = DB::update('update student set age = ? where
          name = ?',['31','seven']); //防止sql注入,返回修改成功的条数
        5.2.4 删除
            $num = DB::delete("delete from student where id > ?",[1]);

    5.3 查询构造器(query builder)
        5.3.1添加
         //普通添加获取返回值为布尔值(一维数组)
         $bool = DB::table('student')->insert(
            ['name'=>'senvenTwo','age'=>13]
         );
         //获取新增后的数据id(一维数组)
        $id = DB::table('student')->insertGetId(
            ['name'=>'senvenTwo','age'=>13]
        );
        //批量插入(二维数组)
         $bool = DB::table('student')->insert([
            ['name'=>'senvenThree','age'=>13],
            ['name'=>'senvenFour','age'=>18],
        ]);

        5.3.2修改
        //修改单条
        $num = DB::table('student')
            ->where('id',7)
            ->update(['age'=>18]);
        //某个字段自增
        $num = DB::table('student')->increment('age');//自增1
        $num = DB::table('student')->increment('age',3);//自增3
        $num = DB::table('student')->where('id',7)->increment('age');//带条件,自增1    
        $num = DB::table('student')>where(['id'=>7,'name'=>'ele'])
        ->decrement('age',1,['name'=>'22']);//带条件,自增age同时修改其他字段   
        //某个字段自减
        $num = DB::table('student')->decrement('age');
        $num = DB::table('student')->decrement('age');

        5.3.3 删除
        $num = DB::table('student')->where(['id'=>7])->delete();
        $num = DB::table('student')->where('id','>=',9)->delete();
        DB::table('student')->truncate();//删除整张表,没有任何返回值

        5.3.4 查询
        get()、first()、where()、pluck()、lists()、select()、chunk()

        //查询表所有数据:
        $list = DB::table('student')->get();
        //取出一条:
        $list = DB::table('student')->orderBy('id','desc')->first();
        //age等于31的
        $list = DB::table('student')->where('age',31)->get();
        //多个条件使用whereRaw
        $list = DB::table('student')->whereRaw('age > ? and id >?',[30,12])->get();
        //只返回某一个字段
        $names = DB::table('student')->pluck('name');
        $names = DB::table('student')->lists('name');
        【注意】:pluck与lists区别在于,lists可以指定某个字段作为key
        $names = DB::table('student')->lists('name','id');//id作为Key,而name作为Value
        //返回多个字段,并非所有字段
        $lists = DB::table('student')->select('id','name')->get();
        //循环部分获取chunk,解决数据量大一次内存承受不住情况:
        DB::table('student')->chunk(2,function($students){
            var_dump($students);
            if($condition){
                return false; //只要return了就不会往下查了
            }
        });//每次查2条,一直到查完为止

        5.3.5聚合函数
        count()、max()、min()、avg()、sum()

        $count = DB::table('student')->count();
        $maxAge = DB::table('student')->max('age');
        $minAge = DB::table('student')->min('age');
        $sumAge = DB::table('student')->sum('age');
        $avgAge = DB::table('student')->avg('age');


    5.4 ORM(对象关系映射)操作数据库,ActiveRecord
        5.4.1 查询
        $allStudents = Student::all();//查询所有学生,返回的是集合
        $allStudents = Student::get();//查询所有学生,返回的是集合
        $student = Student::find(6);//查询id为6的学生,返回的是对象数组,查不到返回null
        $student = Student::findOrFail(6);//查询id为6的学生,返回的是对象数组,查不到就报错
        $students = Student::where('id','>',10)->orderBy('id','desc')->first(); //查询一条first
        Student::chunk(2,function($students){
            var_dump($students); //一次2条
        })
        Student::count();
        Student::max('age');
        Student::min('age');
        Student::avg('age');
        Student::sum('age');

        //分页
        控制器:
        $students = Student::paginate(2);
        页面:
        {{ $students->render() }}

        5.4.2 增加
        **Save**
        $student = new Student();
        $student->name = '我靠';
        $student->age = 19;
        $bool = $student->save();
        //默认维护created_at、updated_at时间戳timestamp,模型中关闭:
        public $timestamps = false;
        //一般都是打开,维护成uninx时间戳:
         public $timestamps = true;//关闭created_at updated_at
        //维护created_at updated_at为unix时间戳
        protected function getDateFormat() {
            return time(); 
        }
        //默认获取created_at时间戳输出,都是格式化好的字符串
        echo $student->created_at; //2017-07-09 11:12:11
        //关闭输出时间戳格式化,model中加入
        protected function asDateTime($value) {
            return $value;
        }

        **Create**
        model中添加:
        protected $fillable = ['age','name'];//允许批量赋值的字段
        protected $guarded = [];//不允许批量赋值的字段
        controller中调用:
        $model = Student::create(
            ['name'=>'aa','age'=>90]
        ); //返回新增后的模型实例


        **FirstOrCreate**
        //以属性查找用户,找不到新增
         $model = Student::firstOrCreate(
            ['name'=>'aa','age'=>90]
        );  

        **FirstOrNew**
        //以属性查找用户,找不到如果想要新增要调用save
        $model = Student::firstOrCreate(
            ['name'=>'aa','age'=>90]
        );  
        //如果不存在
        $bool = $model->save()


        5.4.3 修改数据(会自动维护updated_at)
        //单条修改数据
        $model = Student::find(10);
        $model->age = 100;
        $bool = $model->save();

        //批量修改数据
        $num = Student::where('id','>',17)->update(['age'=>41]);


        5.4.4 删除数据
        //普通模型删除
        $student = Student::find(10);
        $bool = $student->delete();
        //通过主键删除
        $num = Student::destroy(12);
        $num2 = Student::destroy(13,14);
        $num3 = Student::destroy([15,16]);
        //删除指定条件数据
        $num = Student::where('id','>',18)->delete();

6、blade模板

    6.1 模板显示与继承
    layouts:
        //section
        @section('nav')
        这是菜单
        @show
        //yield
        @yield('content','主要内容')
        section与yield区别:yield只能定义变量不能有内容,section可以有内容

    page:
        @extends('layout')
        @section('title')
            我了个去
        @stop
        @section('nav')
            @parent   //输出父模板内容
            zhen menu
        @stop
        @section('content')
            内容
        @stop


    6.2 模板基础语法与include
    {{$name}} //输出php变量
    {{time()}}、{{date('Y-m-d H:i:s')}} //调用php函数输出
    {{var_dump($arr)}} //也是可以打印
    {{isset($name) ? $name : 'default'}}=={{$name or "default"}}
    @{{$name}}  //原样输出{{$name}}
    {{--模板注释--}} //模板注释页面源码查看不到、html注释可以在源码看到
    include引入子视图:@include('student.comment',['var'=>'变量'])


    6.3 流程控制
    //if、elseif、else:
        @if($name == 'aaa')
            I
        @elseif($name == 'bbb')
            You
        @else
            Me
        @endif

    //unless(if取反)
        @unless($name== 'aaa')
        @endunless

    //for:
    @for($i=0;$i<10;$i++)
        {{ $i }}
    @endfor 

    //foreach:
    @foreach($arr as $value)
        {{ $value }}
    @endforeach

    //forelse
    @forelse($arr as $value)
    {{ $value }}
    @empty
        数据不存在
    @endforelse

    6.5 模板中的url
    url()、action()、route()
    路由:Route::get('query1', ['as'=>'query1Alias','uses'=>'StudentController@query1']);
    page:
    <a href="{{ url('query1') }}">url</a> //路由生成连接
    <a href="{{ action('StudentController@query1') }}">url</a> //通过action生成连接
    <a href="{{ route('query1Alias') }}">url</a> //路由别名生成连接


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值