MVC简介
model是应用程序中处理应用程序数据逻辑的部分
数据库中存储数据
view处理数据显示
controller用户交互
1.从model中获取数据
2.接受view的用户操作,做出相应的响应
理解:
controller从model中获取数据
model返回相应的数据
view从controller返回的数据中进行渲染
开发环境:XAMPP
Laravel核心目录的介绍
APP->HTTP->controller
bootstrap包含框架启动和自动加载配置的环节
config文件配置
public入口,静态资源文件:图片
resources->view原始资源文件
storage包含了日志,缓存等文件
vendor包含下载的依赖模块
laravel中的路由和MVC
路由:
转发(用户请求->相应的程序进行处理) 建立url和程序之间的映射
- 1.路由简介请求类型:get、post、put、patch、delete
路由只是用来接受请求,并转化为controller方法进行处理
- 2.基本路由:
Route::get('base',function (){
return 'base1';//返回base1
});
Route::post('base2',function (){
return 'base2'; //请求报错
});
- 3.多请求路由:
Route::match(['get','post'],'multy1', function () {
return 'multy1';//多请求路由:枚举
});
Route::any('multy2',function (){
return 'multy2'; //多请求路由:包括所有的请求
});
- 4.路由参数:
//Route::get('user/{id}',function ($id=1){
// return 'user-id-' . $id;
//});
//Route::get('user/{name?}',function ($name='lcy'){
// return 'user-name-' . $name;
//});
//Route::get('user/{name?}}',function ($name='lcy'){
// return 'user-name-' . $name;
//})->where('name','[A-Za-z]+');
Route::get('user/{id}/{name?}',function ($id, $name='lcy'){
return 'user-id-' . $id .'-name-'. $name;
})->where(['id' => '[1-9]+','name' => '[A-Za-z]+']);
- 5.路由别名:
Route::get('user/c_center',['as'=>'center',function(){
return route('center');//可以在控制器或者路由或者模板中生成别名对应的url
}]);
- 6.路由群组:
Route::group(['prefix' => 'member'], function (){
//member路由前缀
Route::get('user/c_center',['as'=>'center',function(){
return route('center');
}]);
Route::any('multy2',function (){
return 'member-multy2';
});
});
- 7.路由视图
Route::get('view', function () {
return view('welcome');
});
控制器
- 1.新建控制器
//命名空间
namespace App\Http\Controllers;
class MemberController extends Controller{
public function info(){
// return 'member-info';
//q起别名
return route('memberinfo');
}
}
- 2.控制器和路由的关联
两种方式,运用uses键
//Route::get('member/info','MemberController@info');
Route::get('member/info',['uses' => 'MemberCOntroller@info']);
- 3.关联之后,路由特性的使用
Route::get('/member/info',[
'uses'=> 'MemberController@info',
'as'=> 'memberinfo'
]);
class MemberController extends Controller{
public function info($id){
return 'member-info-id-' . $id;
//q起别名
// return route('memberinfo');
}
}
Route::get('member/{id}','MemberController@info')->where(['id'=>'[1-9]+']);
视图
一般来说一个控制器对应一个目录
- 1.新建视图
class MemberController extends Controller{
public function info($id){
// return 'member-info-id-' . $id;
//q起别名
// return route('memberinfo');
return view('member/info',[
'name'=>'liuchunyan',
'age'=>'18'
]); $id; //view(名称)
}
}
- 2.输出视图
创建默认文件info.blade.php
member info php
{{$name}} {{$age}}
模型
新建模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Memder extends Model {
public static function getMember(){
return 'member name is lcy';
}
}
使用模型
namespace App\Http\Controllers;
use App\Memder;
class MemberController extends Controller{
public function info($id){
// return 'member-info-id-' . $id;
//q起别名
// return route('memberinfo');
// return view('member/info',[
// 'name'=>'liuchunyan',
// 'age'=>'18'
// ]) //view(名称)
return Memder::getMember();
}
}
操作数据库
操作数据库的方式:
数据库的操作之DBfacade、查询构造器、Eloquent ORM三种方式
新建和链接数据库
config/database.php
.env
使用DBfacade实现CURD
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
class StudentController extends Controller{
public function test1(){
// 新增
$bool=DB::insert('insert into student(name,age) value (?,?) ',['lgj',17]);
// 更新
var_dump($bool);
$num=DB::update('update student set age= ? where name=?',[19,'lgj']);
var_dump($num);
// 查询
$students=DB::select('select * from student');
// dd($students);
// 删除
$num=DB::delete('delete from student where id > ?',[1]);
var_dump($num);
}
}
创建控制器和模型的快捷方法
查询构造器
(query builder)简介级新增数据
使用PDO参数绑定,以保护应用程序免于SQL注入。因此传入的参数不需要额外转义特殊字符
- 1.使用查询构造器新增数据
//新增
$bool = DB::table('student')->insert(
['name' => 'lgj', 'age' => 18]
);
var_dump($bool);
$id=DB::table('student')->insertGetId(
['name'=> 'qyz','age'=>'19']
);
var_dump($id);
$student=DB::table('student')->insert([
['name'=>'ct','age'=>28],
['name'=>'qh','age'=>18]
]);
dd($student);
- 2.修改数据
更新为指定内容
//更新为指定内容
$num=DB::table('student')
->where('id',4)
->update(['name'=>'zzc','age'=>19]);
var_dump($num);
自增和自减
//自增和自减
$num=DB::table('student')
->increment('age'); //默认自增1
$num=DB::table('student')
->increment('age',3); //自增3
//自减类似increment->decrement转化
$num=DB::table('student')
->decrement('age'); //默认自减1
$num=DB::table('student')
->decrement('age',3); //自减3
//多条件自增
$num=DB::table('student')
->where('id','>',3)
->increment('age',10,['name'=>'iimooc']); //自增10
var_dump($num);
- 3.删除数据
delete
//使用查询构造器删除数据
$num=DB::table('student')->where('id','<',4)->delete();
var_dump($num);
truncate
$num=DB::table('student')->truncate(); //不返回任何东西,全删
- 4.查询数据
get()
//get
$student=DB::table('student')->get();//获取表的所有数据
first()
//first 返回第一条记录;
$student=DB::table('student')
->orderBy('id','desc')//倒序
->first();
where()
//where
$students=DB::table('student')
->where('id','>=',4)
->get();
$students=DB::table('student')
->whereRaw('id >=? and name=?',[5,'iimooc'])
->get();
pluck()
//pluck
$names=DB::table('student')
->pluck('name','id'); //返回指定的字段
lists()
//lists返回指定返回某个键的下标
$names=DB::table('student')->lists('name');//原来laravel以前的版本用的是lists这个方法,而5.3版本则弃用了这个方法,改用方法pluck
select()
//select不想要所有的字段
$student=DB::table('student')->select('name','age')->get();
chunk()
//chunk You must specify an orderBy clause when using this function.使用此函数时必须指定orderby子句
echo '<pre>';
DB::table('student')
->orderBy('id')
->chunk(2,function ($students){
var_dump($students);
if (你的条件){
return false;
//停止两个两个出来
}
});//一次查多少条数据(每次查两条,第一次查两个数组)
- 5.使用聚合函数
count()
// $num=DB::table('student')->count();
max()
// $num=DB::table('student')->max('age');
min()
// $num=DB::table('student')->min('age');
avg()
$num=DB::table('student')->avg('age');
sum()
// $num=DB::table('student')->sum('age');