2022年09月07日
今までweb.phpによるルーティング、Controllerファイルの作成、Viewファイルの作成をやってきました。タスクリスト作成のためにログイン機能とデータベースへの登録・一覧・編集・削除をできるようになりたいので、今回はModelファイルを作成していきます。
前回のViewファイルとは違って、今回はターミナルのコマンドで作成します。
ターミナルでLaravelプロジェクトを作成したディレクトリに移動します。
cd /Applications/MAMP/htdocs/laravel_test
MAMPのドキュメントの中に作成したので。
Macのバージョンにもよるのかもしれませんが、finderでプロジェクトのフォルダを開いて下のステータスバーの現在のフォルダを右クリックすると、”ターミナルで開く”と出るのでクリックするとそのディレクトリで最初からターミナルが開きました。これは便利。
プロジェクトのディレクトリに移動できたらModelファイルを作成するコマンドを入力します。
今回は他のに合わせてplandoにしようかと思います。
php artisan make:model Plando
調べたサイトによってはphpの後にバージョンを入れているサイトもあったのですが、入れなくてもできました。というか入れるとおそらくバージョンが違ったからかエラーが出て作ることができませんでした。Laravelのバージョンかもしれません。
ちゃんとできればエラーが出ることなくこのような表示が出て、app/Models/
のディレクトリの中にplando.php
のModelファイルができています。これもまたサイトによってはappディレクトリの直下にできると書いてあるサイトもありました。おそらくLarabelのバージョンによってけっこう違うみたいです。
とりあえずできました。
スポンサーリンク今までControllerや先ほどModelのファイルを作った、Laravelプロジェクトのartisanコマンドでデータベースのテーブルを作ったり、カラムの変更や削除をすることができます。
テーブルを作成するにあたり、まずは設計書となるマイグレーションファイルを作らなければならないようです。このマイグレーションファイルも同様にartisan makeコマンドでControllerのときのような雛形ファイルを作成できるようです。
Laravelプロジェクトディレクトリで以下のコマンドを実行します。
php artisan make:migration create_plando_table --create=plando
create_plando_table
はマイグレーションファイルの名前で、任意の文字列です。--create=plando
のplandoの部分は作成するテーブル名で今回最初に作成したModelのファイル名と合わせます。
ただModelのファイル名は先頭が大文字、テーブル名は小文字にするルールがあるみたいです。
実行するとマイグレーションファイルがdatabase/migrations/
のディレクトリに作成されます。
作成されたファイルを見ると、
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('plando', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('plando');
}
};
このようになっており、この中のupメソッドがテーブルを作るためのメソッド、downメソッドがテーブルを破棄するためのもののようです。
初期設定はIDと登録・更新日のタイムスタンプのカラムが設定されています。todoのデータベースを作りたいので、そこにタスク名とタスク内容のテーブルを追加します。
public function up()
{
Schema::create('plando', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
この部分を
public function up()
{
Schema::create('plando', function (Blueprint $table) {
$table->id();
$table->timestamps();
//ここからが追加するテーブル
$table -> string('task_name');
$table -> string('task_content');
});
}
こんな感じで変更します。
最後にプロジェクトのディレクトリでこのマイグレーションを実行します。
マイグレーションの実行もartisanコマンドで行います。
php artisan migrate
明らかにエラーがでてますね…
見た感じデータベースのroot権限にパスワードなしで実行して止まっているような感じです。そういえばデータベースの情報はどこに入れるのでしょうか。というかそもそもマイグレーションファイルにデータベース作成のメソッドがないけどどこでデータベース作るんだろう…
とりあえずデータベースの情報はプロジェクト直下の.env
という環境設定ファイルと思われるものに入れるのはわかりました。
この部分ですね。パスワードを入れて再度コマンド実行したらまたエラーが出ました。
今度はデータベース「laravel」がありません。データベース名laravel…?そういえば作ってない。データベース自体を作るコマンドはないっぽい?ターミナルならSQLで作るか、MAMP入れてるのでMyphpAdminで作るしかなさそうですね。
スポンサーリンクということでplandoというデータベースを作成して、この名前とパスワードを.env
ファイルに保存して再度実行してみます。
いけた。よくわからないテーブルも一緒に作成されちゃってますが、追々何者なのかは判明することでしょう。
作りたかったフィールドもできてますね。create_atというのが作成日でしょうか。atは何の略だろう。
なんとかデータベースを作成することができました。次回は早速このフィールドにどうやったら情報を登録できるかをやっていきたいですが、そのためにはこのマイグレーションファイルをもっと深堀りする必要がありそうです。
お仕事のご依頼やご相談、弊社サービス内容に関してなど、お気軽にご相談ください。