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> //路由别名生成连接
Laravel基础(路由、数据库、MVC、模板)
最新推荐文章于 2022-04-28 17:10:26 发布