通过composer创建项目
composer create-project --prefer-dist laravel/laravel blog "6.*"
部分
# 创建数据表迁移 #php artisan make:migration create_blog_posts_table --create=blog_posts # 运行迁移 #php artisan migrate # 回滚变更 #php artisan migrate:rollback # 创建自定义sql #... # 生成模型 php artisan make:model ModelsBlogBlogPosts # 测试数据填充 php artisan make:factory BlogPostsFactory --model=Models/Blog/BlogPosts # 填充类 php artisan make:seeder BlogPostsTableSeeder # 允许填充命令 php artisan db:seed # 控制器 php artisan make:controller BlogBlogController ### ## # laravel 6.^ 中文提示包 composer require "overtrue/laravel-lang:~3.0" 完成上面的操作后,将项目文件 config/app.php 中的下一行 IlluminateTranslationTranslationServiceProvider::class, 替换为: OvertrueLaravelLangTranslationServiceProvider::class, # 将语言包发布到项目中 php artisan lang:publish zh-CN composer remove "overtrue/laravel-lang" # 另一种方式[成功] composer require caouecs/laravel-lang:~3.0 根据需要复制语言包到 resources/lang 目录中。 ->lang->zh-CN.json ->lang->zh-CN文件夹 # 认证系统 composer require laravel/ui:^1.0 --dev php artisan ui bootstrap --auth # php artisan ui vue --auth # php artisan ui react --auth
自定义认证,在注册的时候会默认检测users表,发现users不存在的情况需要修改AuthRegisterController中的
laravel中模型关联的总结
// 多个情况下返回模型集合 IlluminateDatabaseEloquentCollection // dd($model->orderGoods); // 单个情况下返回具体模型 // dd($orderGoods->goods); // 返回关联 IlluminateDatabaseEloquentRelationsHasMany // dd($model->orderGoods()); // 返回关联 IlluminateDatabaseEloquentRelationsBelongsTo // dd($model->goods()); // 关联还可以作为查询语句构造器使用 // AppPost::find(1)->comments()->where('title', 'foo')->first(); // 模型对应数据库的一条数据
监听SQL
php artisan make:listener QueryListener --event=IlluminateDatabaseEventsQueryExecuted
生成./app/Listeners/QueryListener.php
<?php namespace AppListeners; use IlluminateContractsQueueShouldQueue; use IlluminateDatabaseEventsQueryExecuted; use IlluminateQueueInteractsWithQueue; use IlluminateSupportFacadesLog; class QueryListener { /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param QueryExecuted $event * @return void */ public function handle(QueryExecuted $event) { if (env('APP_ENV', 'production') == 'local') { $sql = str_replace("?", "'%s'", $event->sql); $log = vsprintf($sql, $event->bindings); Log::info($log); } } }
./app/Providers/EventServiceProvider.php:19
生成日志文件
laravel自动注入练习
public function index(Content $content) { app(OptionService::class, ['id'=>1, 'a'=>2])->update(); return $content ->title($this->title()) ->description('网站全局内容基本选项设置') ->body(new OptionForm()); }
其中 app(OptionService::class, ['id'=>1, 'a'=>2])->update(); 代码表示调用OptionService这个类实例的update方法
其中OptionService有一个需要注入的参数,放到最前面,后面是一个id和a参数需要以关联数组的方式传入
namespace AppServicesCms; use AppModelsCmsOption; class OptionService { protected $option; public function __construct(Option $option, $id, $a) { dd($option, $id, $a); $this->option = $option; } }