资讯专栏INFORMATION COLUMN

laravel入门

韩冰 / 2814人阅读

摘要:开发根目录测试分为单元测试和功能测试创建一个文件执行测试测试前清除配置缓存运行单个测试用例小提示在开发与进行交互的第三方扩展包时,最好选择注入契约而不使用。

参考
https://laravelacademy.org/

概念 单词

契约Contract 就是接口

repository 仓库(封装数据访问,可以搜索:repository模式)

Container 容器

ServiceProvider 服务提供者

Foundation 基础

$this->app->bind() 绑定契约(接口)
$app->make()
boot extend 覆盖 修改驱动

提示

英文单词的 动词,名词,单数,复数 不同地方用不同的单词.例如 seed和seeder

路由
## 生成资源控制器路由 ,命令里加上 --resoure 生成带crud方法的控制器
php artisan make:controller PostController --resource
#路由一次性绑定资源方法 curd等
Route::resource("post", "PostController");

#模板内使用路由命名 生成url
 100]) }}">
#控制器里使用 路由名字生成url
route("post.show", [$id]);
#路由分组,组内公用中间件 比如登录校验
https://laravelacademy.org/post/9612.html#toc_0
#兜底路由,
Route::fallback(function () {
    return "没设置路由,会到这里";
});
#频率限制 利用内置的throttle中间件实现
Route::middleware("throttle:60,1")->group(function () {
    Route::get("/user", function () {
        //
    });
});
视图
#在视图间共享变量
我们可以在某个服务提供者如 AppServiceProvider 的 boot 方法中定义共享的视图变量:
view()->share("siteName", "Laravel学院");
view()->share("siteUrl", "https://laravelacademy.org"); 
#通过数组指定多个视图组件
view()->composer(["partials.header", "partials.footer"], function ($view) { 
    $view->with("posts", Post::recent()); 
});
视图
变量自动htmlentities转义防止xss ,如果不想自动转义用{!! $variable !!},例如富文本编辑器的代码;
#注释
{{-- 注释内容 --}}
npm和前端编译

npm install 安装 前端库
package.json 可类比为前端的 composer.json,我们通过 npm install 安装该文件中定义的依赖
运行 npm run dev 编译前端资源
大多数时候我们需要在 resources/js/app.js 和 resources/sass/app.scss 中编写代码,引入其它模块,然后运行 npm run dev 就可以了

框架重点

读一遍框架自带的服务提供者源码可以帮助你熟悉各种类是怎么绑定进容器的,都绑定到哪些键上。这是学习 Laravel 框架底层究竟如何运转的最佳实践。

开发

config
根目录.env

artisan

php artisan up
php artisan down

测试 分为 单元测试和功能测试

创建一个 .env.testing 文件

#执行测试
测试前清除配置缓存 php artisan config:clear
vendor/bin/phpunit
#运行单个测试用例
vendor/bin/phpunit --filter=UserTest
小提示

在开发与 Laravel 进行交互的第三方扩展包时,最好选择注入 Laravel 契约 而不使用 Facades 。因为扩展包是在 Laravel 之外构建,你无法使用 Laravel Facades 测试辅助函数

路由中间件

内置了 表单csrf,表单token

自定义中间件

#该命令会在 app/Http/Middleware 目录下创建一个新的CheckAge 类
php artisan make:middleware CheckAge 
常见契约 Contracts
验证email, user包含 email_verified_at 字段
常见方法

only() except() all has exists
$request->input() 智能读取变量 支持json(需要header头设置application/json)

表单验证 $request->validate()
created_at
updated_at

Artisan 命令
#生成可调用的控制器
php artisan make:controller ShowProfile --invokable
#生成资源控制器 --resource参数自带curd方法的自动生成
php artisan make:controller PhotoController --resource
#创建模型  加上-m参数顺便创建迁移文件
php artisan make:model -m Models/Post
#模型工厂文件
php artisan make:factory PostFactory --model=Models/Post

#Schema 建立表
php artisan session:table

#执行数据迁移
php artisan migrate
#全部down,再次up,填充数据
php artisan migrate:refresh --seed
#回滚最后一批迁移
php artisan migrate:rollback
#回滚所有迁移,down方法
php artisan migrate:reset

#删除所有表 重建数据库(破坏性,如果有自己手动录入的表数据请不要执行此操作)
php artisan migrate:fresh
#删除所有表 重建数据库 并填充数据
php artisan migrate:fresh --seed

#生成数据迁移文件 创建新闻表
php artisan make:migration create_news_table --create news
#复杂表单验证 建立类去处理
php artisan make:request StoreBlogPost
#创建auth所需视图和控制器
php artisan make:auth
命令来生成密钥
php artisan key:generate 

数据填充
#创建填充类对象
php artisan make:seeder PostsTableSeeder

运行填充器
编写好填充器类之后,需要通过 dump-autoload 命令重新生成 Composer 的自动加载器:

composer dump-autoload
运行之后可以使用 Artisan 命令 db:seed 来填充数据库。
默认情况下,db:seed 命令运行 DatabaseSeeder 类,
不过,你也可以使用 --class 选项来指定你想要运行的独立的填充器类:

php artisan db:seed
php artisan db:seed --class=UsersTableSeeder

你还可以使用 migrate:refresh 命令来填充数据库,该命令还可以回滚并重新运行所有迁移,这在需要完全重建数据库时很有用:
php artisan migrate:refresh --seed

#填充中文数据
$faker = FakerFactory::create("zh_CN"); 
或者修改配置config/app.php    "faker_locale" => "zh_CN",
Factory 只是生成了测试数据,但是插入还要 用模型和DB类去写;
数据库操作

DB:: 外观类操作数据库 查询构建器
where whereIn whereBetween orderBy first
https://laravelacademy.org/po...
https://laravelacademy.org/po...

模型 Eloquent ORM

https://laravelacademy.org/po...
Eloquent ORM 每个表对应一个类
模型有些默认规则,如果与规则不符,需要重新指定 如表名,主键名,时间戳,连接的库,

注:由于 Eloquent 模型本质上就是查询构建器,你可以在 Eloquent 查询中使用查询构建器的所有方法。
#生成模型文件,带上 -m 可以创建数据迁移文件
php artisan make:model Flight -m

组块结果集chunk 
游标cursor
根据主键获取记录find $flight = AppFlight::find(1);//可以传数组查多条
获取单条记录first  $flight = AppFlight::where("active", 1)->first();
如果无结果跑出异常findOrFail 和 firstOrFail

fillable guarded 二选一  赋值权限设置

控制器 中间件

部署后
#生成路由缓存,
php artisan route:cache
#清除路由缓存
php artisan route:clear
问题:

安装扩展 数据库报错

清除配置缓存试试 php artisan config:clear

SymfonyComponentConsoleExceptionRuntimeException: Too many arguments, expected arguments "command".

执行单元测试的时候报的错,测试里写了执行一个 artisan 命令,命令写错了. 复制的命令是中文字符

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30973.html

相关文章

  • 最适合入门Laravel 初级教程 (一)

    摘要:最适合入门的初级教程一为什么选择曾经要跟白头到老没想到它升了个级就抛了锚把我等抛弃了痛定思痛重新审视了一遍框架是世界上最好的语言这个没有疑问吧如果有那绝对是个异教徒这是要被拖出去烧死的信仰的问题神圣不可侵犯那最好的语言中最流行的框架是哪个呢 最适合入门的 Laravel 初级教程 (一) 为什么选择 laravel 曾经要跟 thinkphp 白头到老;没想到它升了个级就抛了锚;把我等...

    klivitamJ 评论0 收藏0
  • Laravel 5 系列入门教程(四)【最适合中国人的 Laravel 教程】【完结】

    摘要:原文发表在我的个人网站系列入门教程四最适合中国人的教程本教程示例代码见大家在任何地方卡住,最快捷的解决方式就是去看我的示例代码。 原文发表在我的个人网站:Laravel 5 系列入门教程(四)【最适合中国人的 Laravel 教程】 本教程示例代码见:https://github.com/johnlui/Learn-Laravel-5 大家在任何地方卡住,最快捷...

    jsummer 评论0 收藏0
  • 最适合入门Laravel 初级教程 (二)

    摘要:最适合入门的初级教程二看这篇文章的时候你需要安装好配置好本地环境环境搞定后咱来说的下载这里先解决一些童鞋可能有的疑惑的版本更新的那么快从到现在的了我应该下载那个学习呢新出的版本的文档资料丰富么作为一个过来人可以大胆的说学习最新版本没问题除了 最适合入门的 Laravel 初级教程 (二) 看这篇文章的时候;你需要安装好 composer ;配置好本地环境; 环境搞定后; 咱来说lara...

    rubyshen 评论0 收藏0
  • Laravel思维导图之Laravel入门指南

    摘要:本系列思维导图整理自版本官方文档。思维导图导出为图片时会导致其变模糊。需要高清的思维导图源文件,请关注微信公众号,并回复精进脑图来获取。今天我们就通过张思维导图来快速看入门指南。这些文章都将首发在微信公众号上。 showImg(https://segmentfault.com/img/remote/1460000010774258); 本系列思维导图整理自 Laravel 5.4 版...

    vibiu 评论0 收藏0
  • Laravel 5 系列入门教程(二)【最适合中国人的 Laravel 教程】

    摘要:原文发表在我的个人网站系列入门教程二最适合中国人的教程本教程示例代码见大家在任何地方卡住,最快捷的解决方式就是去看我的示例代码。 原文发表在我的个人网站:Laravel 5 系列入门教程(二)【最适合中国人的 Laravel 教程】 本教程示例代码见:https://github.com/johnlui/Learn-Laravel-5 大家在任何地方卡住,最快捷...

    未东兴 评论0 收藏0
  • Laravel 5.4 入门系列 1. 安装

    摘要:的安装与使用是什么是的一个依赖管理工具。它以项目为单位进行管理,你只需要声明项目所依赖的代码库,会自动帮你安装这些代码库。 Composer 的安装与使用 Composer 是什么 Composer 是 PHP 的一个依赖管理工具。它以项目为单位进行管理,你只需要声明项目所依赖的代码库,Composer 会自动帮你安装这些代码库。 安装 Composer Mac 下的安装只需要在命令行...

    hqman 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<