Laravel打造⼀个完整的项⽬搭建简书
开发过程:
1、数据库迁移
2、数据填充
3、模型关联建⽴
4、elasticsearch全⽂检索引擎服务搭建使⽤
5、基于数据库的异步队列操作
6、如何设计表格更符合laravel的默认约定
7、如何理解laravel的依赖注⼊容器等思想
8、如何设计权限管理系统
9、如何使⽤laravel控制⽤户权限
前台模块
⽂章模块、⽤户模块、评论模块、赞模块、搜索模块、个⼈中⼼模块
后台模块
后台架构、管理⼈员模块、审核模块、权限模块、专题模块、系统通知模块
使⽤laravel的功能
⼀、路由
⼆、控制器
三、模型
四、表单验证
五、blade模板
六、⽂件存储
七、分页
⼋、数据库迁移
九、数据填充
⼗、容器
⼗⼀、服务提供者
⼗⼆、门脸类
⼗三、⽤户认证
⼗四、⽤户授权
⼗五、scout全⽂搜索
⼗六、Elasticsearch搜索引擎
⼗七、模型关联
⼗⼋、Artisan命令
⼗九、adminlte的后台模板
⼆⼗、jQuery
⼆⼗⼀、bootstrap
⼆⼗⼆、队列
laravel的介绍(5.4)
Laravel的特性
优雅:多种设计模式(依赖注⼊、门帘等思想)
简介:复杂的逻辑已经封装好了
⼯程化:框架较重 但是编写的代码风格样式都是差不多的
Laravel的历史和版本
2011年出现laravel1.0版本出现
2015年LTS版本 long time support
需要注意的是 4.1~5.0 的版本有较⼤的变化,主要在路由⽂件结构等⽅⾯
5.0~5.4 中 5.2 的版本变化⽐较⼤(⽂件夹及结构)
5.4版本及之后的才有搜索的功能
Laravel的优势
Laravel 包含的功能更为丰富
队列(redis,beanstalk,失败延时重启等)、搜索、数据库迁移、定时脚本
Laravel 的思想更为先进
服务容器、不同的环境下不同的服务提供者 =》⽐如缓存服务
Laravel 的社区更为丰富
国际化、基于laravel的开源项⽬多、开源
安装
安装环境要求
PHP版本 》= 5.6.4
相关扩展
MySQL
采⽤composer安装laravel
composer create-project laravel/laravel laravel54 "5.4.*"
创建项⽬      github中的此⽬录 下载后的名称 下载其中的分⽀
启动laravel
⽅式⼀是配置webserve需看官⽹的⽂档
⽅式⼆ php artisan serve    /    php artisan help serve(可以设置端⼝ 模式等)
Laravel⽬录结构介绍
⽂件夹介绍
app      逻辑代码
config    配置⽂件
database  数据库管理
public    对外资源
resource  视图等资源⽂件
storage      ⽇志⽂件(在配置时需要有读写的权限)
tests    测试⽤例
vendor    第三⽅类包
修改.env数据库配置⽂件
⾸先使⽤.env的好处是可以在使⽤版本库的时候 可以有效的避免关键数据秘钥的泄露 可以有效的规避.evn⽂件  所在位置/laravel54/config/databases.php > 'default' => env('DB_CONNECTION', 'mysql'),
env(⽅法如果存在读取.env中的数据 , 如果不存在读取配置⽂件下mysql的值)
.gitignore ⽂件在上传时 避免将.env数据存储且上传
在.env⽂件修改好了数据库的信息之后 需要测试是否成⽴ 所以在项⽬命令⾏中输⼊ php antisan ⾥⾯有创建表的命令      migrate : 表⽰⽤来做数据迁移的
migrate:install      Create the migration repository
结果
GoogoldeMBP:laravel54 googol$ php artisan migrate:install
Migration table created successfully.
创建成功
⼀、项⽬模块相关的介绍
⽂章模块
路由
1.路由        ⽂章路由:⽂章列表、添加⽂章、编辑⽂章、删除⽂章、⽂章详情
laravel路由的⼏种形式                增量更新资源  查询资源⽀持哪些⽅法
1.http ⽅法  Route::get/post/put/patch/delete/options($url , $callback);
2.路由参数    Route::get('user/{id}', function ($id){ return 'User'.$id; })
3.路由分组    路由分组是将路由中多次出现的访问标识进⾏⼀个分组 默认会访问组名(标识)
Route::group(['prefix' => 'posts'],function(){
Route::get('/{id}',)
})
4.绑定模型    将路由绑定给模型 直接去模型的⽅法 可以减少代码
Route::get('api/users/{user}',function(App\User $user){
return $user->email;
})
⽀持所有的路由 可以Route::any
⽀持get与post 可以Route::match(['get','post'],);
注意:因为form表达只⽀持get post 如果想做修改 需要将 from action='post' 内
input name="_method" value="PUT" 就能访问到Route为put 等价于 {{method_filed("PUT")}}
路由地址 routes/web.php
路由写法 Route::get('/posts','\App\Http\Controllers\PostController@index');
url访问    [控制器需要带命名空间]@[⾏为]
2.命令⾏创建控制器的便捷⽅法
cd /laravel/..php artisan..有..make controller
php artisan help make:controller..可以查看关于make controller的相关说明
localhost:laravel54 googol$ php artisan make:controller PostController 创建控制器
3.⽂章模板的页⾯渲染
return view('视图⽂件夹/模块名',第⼆个参数是数据值array类型);
第⼆个传⾄也可以是compact
4.模板
将样式⽂件都放置在public中  样式中只需要添加 '/'
使⽤的是blade模板
php修改数据库内容模板语法{{}}      @if @endif    @foreach $endforeach
参数传递 //$posts[] $arr[]  compact('posts','arr');
继承模型 extension/ section/ yield/ content
引⼊视图 include
⽂章模块的页⾯模板调整(使⽤继承)
到页⾯模板公共的部分
创建views/layout/main.blode.php写⼊公共的视图⽂件 将⾮公共的区域使⽤ yield('这⾥的字符串将会引⼊活动的页⾯')                    在正式的页⾯需要将公共的内容剥离 只留下动态的数据页⾯ 在顶部写⼊
@extends("layuot.main")
@section("content")    活动页⾯    @endsection 结构 就可以使⽤公共的页⾯ 提⾼了代码的复⽤率
表设计
1.表设计
使⽤migration创建posts数据表
laravel中建议表名及先关的字段都遵守建议的标准名称
⽐如:posts 表名、 user_id 外键、 created_at / updated_at 创建与修改字段
创建命令使⽤如下
localhost:laravel54 googol$ php artisan help make:migration
localhost:laravel54 googol$ php artisan make:migration create_posts_table
create_posts_table 是创建 posts 表的格式
执⾏是 php artisan migration
回滚是 php artisan migrate:rollback
localhost:laravel54 googol$ php artisan migrate
5.4唯⼀出现的问题
In Connection.php line 647:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key lengt
h is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))
In Connection.php line 449:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key lengt
h is 767 bytes
解决办法
在 app/Providers/AppServicePriders.php 中的 boot⽅法是在ServicePrider启动之后    register 是在启动之前                        public function boot()
{
//mb4string 类型 每个占位4bytes; 767/4
Schema::defaultStringLength(191);
}
输⼊ localhost:laravel54 googol$ php artisan migrate    就可⽣成数据表
2.模型
使⽤ORM创建⽂章模块模型
ORM
什么是ORM是⼀个class对应⼀个表 使⽤这个类完成对于数据库的操作
创建posts的模型
模型放置的位置 /app/Http/
如果表与模型名称不⼀,需要定义 protected $table = "表名定义";
tinker 的使⽤
tinker是⼀款和应⽤程序的插件
启动  localhost:laravel54 googol$ php artisan tinker      显⽰的是shell脚本
在创建完成模型之后检测模型中的⽅法 可以使⽤tinker ⽆需再让控制器去调⽤
写法
Psy Shell v0.9.6 (PHP 7.1.7 — cli) by Justin Hileman
>>> $post = new \App\Posts();
=> App\Posts {#2806}
>>> $post->title = "this is post1";
=> "this is post1"
>>> $post->content = 'this is content1';
=> "this is content1"
>>> $post->save();
=> true                  《== 查看数据库 是否有值
问题:在创建之后 这⾥会有⼀个时区的问题(默认是英国的时区 需要将其设置为中国的时区 设置办法如下)
/config/app.php  》 'timezone' => 'UTC', 等价于原⽣的 date_default_timezone_set
设置为 Asia/Shanghai; 最后需要将tinker关闭 重启 ⽅可修改时区信息
Tinker的基本的增删改查
增:
>>> $post = new \App\Posts();
=> App\Posts {#2806}
>>> $post->title = "this is post1";
=> "this is post1"
>>> $post->content = 'this is content1';
=> "this is content1"
>>> $post->save();
=> true

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。