Laravel From Scratch part. 1
Laravel
Laravelの本にちょっと飽きたので、動画サイトで学習します。
コード補完
Laravelを使い始めた人にはわかると思いますが、VSCodeでLaravelの補完が効かずに、エラーを出すので調べて見たところVSCodeのプラグインが原因でした。Laravelに対応していないみたいです。
[Laravel] IDEによるコード補完まとめ - Qiita
この記事の通りにやると僕の環境ではエラーが出たので、
composer require --dev barryvdh/laravel-ide-helper:2.* php artisan ide-helper:generate
とするとちゃんと動きました。
Chapter 3 Database Access: Setup a Database Connection
このチャプターでデータベースを使っていくんですが、僕の環境はWindowsなので、XAMPPを起動してphpMyAdminを使いました。
DB
LaravelではDBのパスワードなどは.envファイルにあるので、意識することなくDBを使うことができます。
class PostsController extends Controller { public function show($slug) { // 1件取得する $post = \DB::table('posts')->where('slug', $slug)->first(); return view('post', [ 'post' => $post ]); } }
SQLチックに書くことができます。こういう文をあまり書いたことがないので、覚えていきたいですね。
\DB
を外したければ、
use DB; DB
と書くことができる。
Chapter 3 Database Access: Migrations 101
phpmyadminでpostsテーブルを削除します。
次に、マイグレーションのためのファイルを作ります。
php artisan make:migration create_posts_table
実行して
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreatePostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('posts', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('slug'); $table->text('body'); $table->timestamps(); $table->timestamp('published_at')->nullable(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('posts'); } }
を作り、
php artisan migrate
を実行しましたが、
Illuminate\Database\QueryException : could not find driver (SQL: select * from information_schema.tables where table_schema = laravel6 and table_name = migrations and table_type = 'BASE TABLE')
というエラーが出ました。調べて見ると、php.iniが問題みたいですね。
laravelでpowershellからmigrateしようとしたらcould not find driverが出る - Qiita
この記事の通り、xamppのシェルから実行するとうまくいきました。PHPの公式サイトからインストールしたPHPとXAMPPに入っているPHPの環境があるので、問題だったようです。
実行しphpmyadminで確認するとpostsテーブルが確認できます。
ここで新しくpostsテーブルにカラムを追加します。
class AddTitleToPostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('posts', function (Blueprint $table) { $table->string('title'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('posts', function (Blueprint $table) { $table->dropColumn('title'); }); } }
これを実行した後に、
php artisan migrate:rollback
を行うと、'title'カラムが削除されます。
Laravelのmigrate:rollbackについて - Qiita
最後にmigrateを行う前の状態に戻るということみたいです。
Chapter 3 Database Access: Business Logic
php artisan make:model Assignment -mc
-mc を付けることでマイグレーションファイルとコントローラーとモデルを同時に作成します。
php artisan tinker
を実行してLaravel対話的にLaravelを使うことができます。