美文网首页laravel5.4
laravel中mvc、数据库操作

laravel中mvc、数据库操作

作者: ISIS卡拉肖克 | 来源:发表于2018-04-16 02:45 被阅读0次

    控制器

    在Laravel的MVC结构中,控制器属于C部分,链接M(modal)和V(view)层,将modal层的数据通过脚本动态添加到view层中。

    创建控制器使用命令行模式,切换到laravel根路径下,执行:

    php artisan make:controller MemberController

    这个创建好的controller放在,laravel根路径下App/Http/Controller/下

    创建控制器,执行:

    php artisan make:controller MemberController--plain

    结合路由设置控制器

    当用户请求服务器的test路径时,服务器会执行MemberController中的info方法

    Route::get("/member" , 'pengwei@163.com');

    带参数的路由使用控制器

    Route::get("/user/edit/{id}" , 'pengwei@163.com');

    带参数的路由配合中间件使用控制器

    Route::get("/member/info/{id}" , [
    "mail" => 'pengwei@163.com'
    ]) ;

    2.数据库基本操作

    使用原生SQL进行查询。

    // 查询
    $result=DB::select('select * from la_user where id=?',[$id]);
    $result2=DB::select('select * from la_user where id=:id',['id'=>$id]);
    // 插入
    $affected=DB::insert('insert into la_user(id,name) values(?,?)',[$id,$name]);
    // 删除
    $deleted=DB::delete('delete from la_user');
    // 事务
    DB::transaction(function(){
        // 执行上面操作
    });
    // 回滚
    DB::rollBack();
    
    构造器
    $users=DB::table('la_user')->get();
    foreach($users as $user){
        echo $user->name;
        echo $user->id;
    }
    
    获取整行
    $user=DB::table('la_user')->first();
    echo $user->name;
    
    获取一个字段 value
    $user_names=DB::table('la_user')->value('name');
    
    获取一列
    $user_name=DB::table('la_user')->pluck('user_name');
    
    设置返回列的数组索引
    $name=DB::table('la_user')->pluck('name','id');
    
    组块结果集 chunk
    DB::table('la_user')->chunk($Number,function($anyName){
        // 这里的$anyName表示的是DB::table('la_user')->select()
        foreach($anyName as $key=>$value){
            // code...
        }
        // 如果想停止运行,那么就返回错误
        return false;
    });
    

    聚合函数

    查询 select
    DB::table('la_user')->select('id','name')-get();
    
    返回唯一结果 distinct
    DB::table('la_user')->select('user_info')->distinct()->get();
    
    使用SQL语句 raw
    DB::table('la_user')->select(DB::raw("count(*) as number"))->get();
    
    限制条件 where

    where接受三个参数,这三个参数分别是列名、操作符,要比较的值

    $users=DB::table('la_user')->where("user_id","=","100")->first();
    
    多条件查询
    $users=DB::table('la_user')->where(array(
        ['id','=','100'],
        ['name','=','hello world']
    ))->get();
    
    或 orwhere
    $users=DB::table('la_user')
        ->where('id','=','100')
        ->orwhere('id','=','101')
        ->get();
    
    whereBetween
    $users=DB::table('la_user')
        ->whereBetween('id',[1,100])
        ->get();
    
    排序 orderBy
    // 第二个参数可以指定升序排序 asc 还是降序排列 desc
    $users=DB::table('la_user')->orderBy('id','desc')->get();
    
    对结果集进行分组 having / havingRaw
    $users=DB::table('la_user')
        ->groupBy('name')
        ->having('name','=','King')
        ->get();
    
    skip / take 对应 offset / limit
    条件查询 when

    比较直观的说法可以是,在查询中可以根据外部条件确定查询条件:

    DB::table('la_user')
        ->when(
            $situation,
            function($query){
                // 当$situation为true时进行执行
            },
            function($query){
                // 当$situation为false时进行执行
            }
        )
        ->get();
    

    这样我们就可以在外部设置$situation的值,通过控制$query,来进行查询了。

    插入数据 insert
    DB::table('la_user')->insert(
        ['name'=>'pengwei','emai'=>'pengwei@277.com']
    );
    
    插入多组数据
    DB::table('la_user')->insert(
        ['name'=>'one'],
        ['name'=>'tow'],
        ['name'=>'there'],
        ['name'=>'four']
    );
    
    获取插入数据后的ID insertGetId
    $id=DB::table('name')->insertGetId(
        ['name'=>'test'],'id'
    );
    

    注意!如果不使用 insertGetId 的第二个参数指定表的主键名称的话,那么默认主键名称为 id

    更新 update
    DB::table('name')
        ->where('id',100)
        ->update(
            ['name'=>'test']
        );
    
    删除 delete
    DB::table('name')
        ->where('id',100)
        ->delete();
    
    分页 paginate
    $users=DB::table('name')->paginate(10);
    
    简单分页 simplePaginate

    相比于上面的paginate,这里的简单分页仅仅提供上一页、下一页这样的作用。

    $users=DB::table('la_user')->simplePaginate(10);
    
    显示分页结果

    要将分页的超链接显示在视图中,可以使用如下的形式:

    假设控制器传递进来的参数格式如下:

    $users=DB::table('la_user')->paginate(10);
    return view('User.index',['users'=>$users]);
    
    {{$users->links()}}
    
    在链接中加入参数
    {{$users->appends(['name'=>$user_name])->links()}}
    

    季度总结:第一季度计划是学数学英语的,怎奈计划赶不上变化,属实抽不出太多时间,每周学的进步很慢,数学30%其他基本没学,上上周开始还是学个感兴趣的吧,等工作业余时间稍微多点了,课本学习就放在年点报班学吧

    周总结:本周继续学的laravel,下周继续,今年目标用这个框架写个网站。

    相关文章

      网友评论

        本文标题:laravel中mvc、数据库操作

        本文链接:https://www.haomeiwen.com/subject/mktskftx.html