1. 项目创建
首先我们用composer创建项目 , composer会根据当前的php版本 帮我们选择支持的最高版本
composer create-project --prefer-dist laravel/laravel myblog
laravel新版本比较激进 ,需要最低 php7 支持
2. 项目配置 数据库配置 ,时区配置 ,路由配置等等
项目配置主要在根目录下的 .env 文件中
主要是数据库配置 和 redis的配置
//数据库配置
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
//redis配置
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
注意 config / app.php 文件 ,改时区,一般默认是PRC
'timezone' => 'PRC',
3. 留言板增删改查
public function addsave(Request $request){$postdata = $request->all();//验证数据$rules = ['title' => 'required|unique:dw_msg|max:100', /*此处规则为必须 标题唯一,验证器会到dw_msg里找 最长长度为100个字符*/'content' => 'required|max:100',];$validator = Validator::make($postdata, $rules);if ($validator->fails()) {return redirect('error')->withErrors($validator)->withInput();}else{$u = json_decode(json_encode(Session::get('userinfo')[0]),true);$res = DB::insert('insert into dw_msg (title,content,uid,time) values (:title,:content,:uid,:time)', ['title'=>$postdata['title'],'content'=>$postdata['content'],'uid'=>$u['uid'],'time'=>time() ]);if($res){return redirect('/');}else{echo 'insert data fails';exit();}}}
这里主要介绍添加数据这个操作 。
这里使用到 接收参数的Request包 , 验证数据的Validator包 和 数据库DB包 和 会话控制包 Session ,分别需要在头部引入
use Illuminate\Http\Request; //默认导入的包
use Illuminate\Support\Facades\Validator;
use DB; //等同于 use Illuminate\Support\Facades\DB;
use Session;
可以看到类中大量导入 Illuminate\Support\Facades 这个命名空间下的类 。
Facades 是 laravel 中比较核心的类库 ,包括诸如 session ,DB,Route 等等底层类
4. 分页
laravel中实现分页也比较简单
$results = DB::table('dw_msg')->orderBy('id','desc')->paginate(8);
return view('msg.index', ['list'=>$results]);
视图页码显示:
{{$list->links()}}
默认显示样式:
还有一种是 simplePaginate(15); 这种只显示上一页 和下一页
5. 登录模块 和 session 的使用
$res = DB::select('select * from dw_user where username = :u', ['u' => $postData['username']]);
$tmp = json_decode(json_encode($res),true);
$md_for_pass = set_passwords($postData['password'],$tmp[0]['salt']);
if($tmp[0]['password']== $md_for_pass){Session::put('userinfo',$res);Session::save();echo 'login success';exit();
}else{echo 'login fail';exit();
}
对象转换数组的方法:
$tmp = json_decode(json_encode($res),true);
一般DB类查询数据 ,都会返回 stdclass 对象 ,可直接使用 ,可转换使用
6. 加入验证码
验证码使用composer引入第三方的类
composer require "gregwar/captcha 1.*"
控制器:
namespace App\Http\Controllers\User;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Gregwar\Captcha\CaptchaBuilder;
use Session;class codeController extends Controller
{public function captcha($temp){$builder = new CaptchaBuilder();$builder->build(100,32);$phrase = $builder->getPhrase();//把内容存入sessionSession::flash('milkcaptcha', $phrase); //存储验证码ob_clean();return response($builder->output())->header('Content-type','image/jpeg');}}
视图使用:
验证码:<img src="/getcode/1" alt="点击刷新" onclick="this.src='/getcode/'+ Math.random();" style="cursor:pointer" align="absmiddle"/>
参考:laravel自带验证码类的使用 - 程序员大本营
7. redis的使用
composer导入:
composer require predis/predis
首先需要引入
use Illuminate\Support\Facades\Redis;try{Redis::set('key','value123123');$value = Redis::get('key');echo $value;
}catch (\Exception $e){//返回服务器内部错误 500 的响应码echo $e->getMessage();
}
8. model层的使用
namespace App;use Illuminate\Database\Eloquent\Model;class dw_msg extends Model
{//protected $table="dw_msg";protected $primaryKey = "id";protected $fillable = ['title', 'content', 'uid',];public $timestamps = false;
}
1. protected $table="dw_msg" 默认规则是模型类名的复数作为与其对应的表名,除非在模型类中明确指定了其它名称
2. protected $primaryKey = "id"; 默认每张表的主键名为id ,你可以在模型类中定义一个$primaryKey 属性来覆盖该约定
3. protected $fillable 用于调用create() 方法时候 的白名单。 如图定义了 'title', 'content', 'uid' 字段
4. public $timestamps = false; 默认情况下,Eloquent 期望created_at 和updated_at 已经存在于数据表中,如果你不想要这些 Laravel自动管理的列,在模型类中设置$timestamps 属性为false
常见的增删改查方法,具体可查看线上手册
//获取所有记录
$flights = Flight::all();// 获取匹配查询条件的第一个模型...
$flight = App\Flight::where('active', 1)->first();//插入数据
$flight = new Flight;
$flight->name = $request->name;
$flight->save();//更新数据
$flight = App\Flight::find(1);
$flight->name = 'New Flight Name';
$flight->save();//删除
$deletedRows = App\Flight::where('active', 0)->delete();
9.要注意的几个问题
9.1 公共函数如何添加
1.在app/Helper/下新建functions.php 文件
2. 打开项目根目录下的 composer.json 文件,找到"autoload" 配置项,补充如下代码:
"files":["app/Helper/functions.php"]
3. 在根目录执行
composer dump-auto