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();
//把内容存入session
Session::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"/>
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