美文网首页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