控制器
在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,下周继续,今年目标用这个框架写个网站。
网友评论