Laravelを使ってみよう-5

2022年09月07日

Modelファイルを作成する

今まで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は何の略だろう。

なんとかデータベースを作成することができました。次回は早速このフィールドにどうやったら情報を登録できるかをやっていきたいですが、そのためにはこのマイグレーションファイルをもっと深堀りする必要がありそうです。

お知らせ

株式会社プラン・ドゥではphpとデータベースを利用したアプリケーション開発を行なっております。
wordpressでのホームページ作成、phpのスクラッチ開発などが可能です。
業務効率化等でお困りのことがございましたら、システムのご提案からさせていただきますのでお気軽にご相談ください。

その他の取扱商品はこちらからご覧いただけます。
https://plando-inc.co.jp/product

同じカテゴリの記事

関連記事

スポンサーリンク

DTP

Laravel開発

wordpressカスタマイズ

デジタルマーケティング

ライフハック

動画

当社製品について

Contact各種お問い合わせ

お問い合わせ・ご相談など
まずはお気軽にご相談ください

お仕事のご依頼やご相談、弊社サービス内容に関してなど、お気軽にご相談ください。

トップページ コラム 各種お問い合わせ プライバシーポリシー