参考https://lavelacademy.org/概念词contractContract是接口repository仓库(封装数据访问,可以搜索:repository模式)Container容器ServiceProvider服务提供者Foundationfoundation$this->app->bind()绑定契约(接口)$app->make()bootextend覆盖和修改驱动程序以提示英文单词的动词、名词、单数和复数。不同的地方使用不同的词。比如seed和seederroutes##生成资源控制器路由,在命令中加上--resoure生成一个带有crud方法的controllerphpartisanmake:controllerPostController--resource#Routing一次性绑定资源方法curd等路由::resource('post','PostController');#模板中使用路由命名生成url100])}}">#controller使用路由名称生成urlroute('post.show',[$id]);#路由分组,组内公共中间件如登录验证https://lavelacademy.org/post/9612.html#toc_0#底层路由,Route::fallback(function(){return'没有设置路由,会到这里来';});#使用内置的油门中间件实现频率限制Route::middleware('throttle:60,1')->group(function(){Route::get('/user',function(){//});});View#Sharingvariablesbetweenviews我们可以在AppServiceProvider等服务提供者的boot方法中定义共享视图变量:view()->share('siteName','LaravelCollege');view()->share('siteUrl','https://lavelacademy.org');#通过数组指定多个视图组件view()->composer(['partials.header','partials.footer'],function($view){$view->with('posts',Post::recent());});view变量自动转义htmlentities防止xss,如果不想自动转义用{!!$variable!!},比如富文本编辑器的代码;#注释{{--注意内容--}}npm和前端编译npminstallinstall前端库package.json可以类比前端composer.json,我们通过npminstallrun安装这个文件中定义的依赖npmrundev编译前端资源大部分时候我们需要在resources/js/app.js和resources/sass/app.scss中编写代码,引入其他模块,然后运行npmrundev。框架重点阅读框架自带的服务提供者的源码,帮助大家熟悉各种类是如何绑定到容器中的,以及绑定到哪些键上。这是了解底层Laravel框架如何工作的最佳实践。developmentconfig根目录.envartisanphpartisanupphpartisandown测试分为单元测试和功能测试创建.env.testing文件#测试执行前清除配置缓存phpartisanconfig:clearvendor/bin/phpunit#运行单个测试用例vendor/bin/phpunit--filter=UserTestTips在开发与Laravel交互的第三方扩展包时,最好选择注入Laravel契约,而不是使用Facades。因为扩展包是在Laravel之外构建的,所以不能使用LaravelFacades来测试辅助功能路由中间件已经内置了formcsrf,formtoken自定义中间件#这个命令会在app/Http/新建一个CheckAge类中间件目录phpartisanmake:middlewareCheckAgecommoncontractsContractsverifyemail,usercontainsemail_verified_atfieldcommonmethodsonly()except()allhasexists$request->input()智能读取变量支持json(需要header设置application/json)formValidate$request->validate()created_atupdated_atArtisancommand#Generatecallablecontrollerphpartisanmake:controllerShowProfile--invokable#Generateresourcecontroller--resource参数自带curd方法自动生成phpartisanmake:controllerPhotoController--resource#创建模型加上-m参数顺便创建一个迁移文件phpartisanmake:model-mModels/Post#Modelfactoryfilephpartisanmake:factorypostFactory--model=Models/Post#Schema建表phpartisansession:table#执行数据迁移phpartisanmigrate#全部下来,再起来,填充数据phpartisanmigrate:refresh--seed#回滚最后一批迁移phpartisanmigrate:rollback#回滚所有迁移,down方法phpartisanmigrate:reset#删除所有表并重建数据库(破坏性的,如果手动输入表数据请不要执行此操作)phpartisanmigrate:fresh#Delete所有表重建数据库并填写数据phpartisanmigrate:fresh--seed#Generatedatamigrationfilecreatenewstablephpartisanmake:migrationcreate_news_table--createnews#Complexformvalidationtocreateclassestoprocessphpartisanmake:requestStoreBlogPost#创建auth所需的视图和控制器phpartisanmake:auth命令生成密钥phpartisankey:generatedatafilling#创建一个filler类对象phpartisanmake:seederPostsTableSeeder运行filler写好filler类后,需要通过dump-autoload命令重新生成Composer的autoloader:composerdump-autoload运行后,可以使用Artisan命令db:seed来填充数据库默认情况下,db:seed命令运行DatabaseSeeder类,但是,您也可以使用--class选项指定要运行的独立播种器类:phpartisandb:seedphpartisandb:seed--class=UsersTableSeeder你也可以使用migrate:refresh命令填充数据库,它也可以回滚并重新运行所有迁移,这在你需要完全重建数据库时很有用:phpartisanmigrate:refresh--seed#fillChinesedata$faker=Faker\Factory::create('zh_CN');或者修改配置config/app.php'faker_locale'=>'zh_CN',Factory只生成测试数据,但是插入需要写上model和DBclass;数据库操作DB::AppearanceClassOperationDatabaseQueryBuilderwhereInwhereBetweenorderByfirsthttps://lavelacademy.org/po...https://lavelacademy.org/po...ModelEloquentORMhttps://lavelacademy.org/po...EloquentORM对对应于类模型的每个表都有一些默认规则。如果不符合规则,则需要重新指定表名、主键名、时间戳、连接库等。注意:由于Eloquent模型本质上是一个查询构建器,您可以在Eloquent查询中使用的查询构建器的所有方法中使用它。#生成模型文件,带-m创建数据迁移文件phpartisanmake:modelFlight-mblockresultsetchunkcursor游标根据主键获取记录find$flight=App\Flight::find(1);//是传数组查多条记录先获取单条记录$flight=App\Flight::where('active',1)->first();如果没有结果,就会出现异常,findOrFail和firstOrFailfillable守护,两个赋值权限中选一个设置controller中部组件部署后#生成路由缓存,phpartisanroute:cache#清除路由缓存phpartisanroute:清除问题:安装扩展数据库错误清除配置缓存尝试phpartisanconfig:clearSymfonyComponentConsoleExceptionRuntimeException:参数太多,预期参数“命令”。Execute单元测试时报错。测试中执行了artisan命令,但是命令写错了。复制的命令是汉字