从零开始laravel
通过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 Models\Blog\BlogPosts # 测试数据填充 php artisan make:factory BlogPostsFactory --model=Models/Blog/BlogPosts # 填充类 php artisan make:seeder BlogPostsTableSeeder # 允许填充命令 php artisan db:seed # 控制器 php artisan make:controller Blog\BlogController ### ## # laravel 6.^ 中文提示包 composer require "overtrue/laravel-lang:~3.0" 完成上面的操作后,将项目文件 config/app.php 中的下一行 Illuminate\Translation\TranslationServiceProvider::class, 替换为: Overtrue\LaravelLang\TranslationServiceProvider::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不存在的情况需要修改Auth\RegisterController中的
laravel中模型关联的总结
// 多个情况下返回模型集合 Illuminate\Database\Eloquent\Collection // dd($model->orderGoods); // 单个情况下返回具体模型 // dd($orderGoods->goods); // 返回关联 Illuminate\Database\Eloquent\Relations\HasMany // dd($model->orderGoods()); // 返回关联 Illuminate\Database\Eloquent\Relations\BelongsTo // dd($model->goods()); // 关联还可以作为查询语句构造器使用 // App\Post::find(1)->comments()->where('title', 'foo')->first(); // 模型对应数据库的一条数据
监听SQL
php artisan make:listener QueryListener --event=Illuminate\Database\Events\QueryExecuted
生成./app/Listeners/QueryListener.php
<?php namespace App\Listeners; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Database\Events\QueryExecuted; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Support\Facades\Log; 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 App\Services\Cms; use App\Models\Cms\Option; class OptionService { protected $option; public function __construct(Option $option, $id, $a) { dd($option, $id, $a); $this->option = $option; } }
laravel,多对多的测试
原创文章请随便转载。愿和大家分享,并且一起进步。-- 江 coder