MENU
カタログクリップ
本ページはプロモーションを含みます。

Laravel 5.5 入門として「基本のタスクリスト」を作成する [その1]

2020 6/28
広告
コンピューター
2017年11月12日2020年6月28日

Laravel公式にあるクイックスタートは2017年9月現在では古く、Laravel 5.5ではディレクトリ構造が異なっているなどして、スムーズに進められません。

他の良いチュートリアルとして、Laravel 5.2までドキュメントに含まれている「基本のタスクリスト」があります。

そこでこの記事では、Laravelに入門する方を対象に、そのチュートリアルをLaravel 5.5で行う方法を順を追って紹介します。

記事は次の3回に別れており、本記事は1つ目の記事です。

  • Laravel 5.5 入門として「基本のタスクリスト」を作成する [その1]
  • Laravel 5.5 入門として「基本のタスクリスト」を作成する [その2]
  • Laravel 5.5 入門として「基本のタスクリスト」を作成する [その3]

 

なお、本記事中のLaravelドキュメントへのリンクは、有志の方が作成している日本語訳へリンクしています。

翻訳を公開してくださっている川瀬裕久さんに感謝です。

 

チュートリアルでは、次の画像のような、タスクリストの機能を持つWebアプリを作成します。

 

以下の説明はMacOS Sierra環境で、データベースにはmysqlを使います。

目次

前準備

composer

composer をインストールしていない場合は、brewなどでインストールします。

brew install homebrew/php/composer

 

mysql

mysqlが入っていない場合には、インストールします。

$ brew install mysql

続いて、一時的にmysqlを実行する場合には、次のコマンドでmysqlを起動。

$ mysql.server start

あるいは、サービスとして実行する場合には、次のコマンドでmysqlをサービスとして登録。

$ brew services start mysql
$ brew services list

2行目で、正しく登録されたか確認できます。

 

次にチュートリアル用のデータベース”homestead”を作成します。

デフォルトでルートパスワードなしで登録されていますから、次のコマンドでmysqlに接続できます。

$ mysql -uroot

次のSQLコマンドでデータベースを作ります。

mysql> create database homestead;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| homestead          |
+--------------------+

mysql> show tables from homestead;
Empty set (0.00 sec)

mysql> exit
Bye

データベースの中身は空のままで構いません。

 

なお、データベースを削除するには、

drop database <データベース名>;

を使います。

Laravelをインストール

次のコマンドで、Laravelフレームワークをインストールします。

create-projectは、git cloneやsvn checkoutを行った後、composer installをするのと同じです。

$ composer create-project laravel/laravel quickstart --prefer-dist

すると実行パスの下に、quickstartディレクトリが作成され、そこにLaravelがインストールされます。

ディレクトリ名は任意で、quickstart以外でも構いません。–prefer-distオプションは、安定版やリリース版を優先的に選択します。

 

artisanコマンドでlaravelのバージョンを確認しておきます。

$ cd quickstart
$ php artisan --version
Laravel Framework 5.5.3

artisanはアーティザンと読みます。職人という意味です。ルートディレクトリに配置されているphpプログラムであり、開発で役立つコマンドを提供しています。

データベースの設定

次にデータベースの設定をします。

コンフィグファイル

quickstart/.env

を編集します。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

となっている部分のユーザー名とパスワードを、自らの環境に合うように次のように変更します。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=null

テーブルの定義

本アプリケーション「基本のタスクリスト」では、タスク情報はデータベースにテーブルを作成して保存することにします。

Laravelには、定義ファイルを元にしてテーブルを作成する機能があります。

定義ファイルを作っておけば、php artisan migrationというコマンドをひとつ打つだけで、データベースにテーブルが作成されます。

これにより、アプリケーションをインストールするたびに管理者が直接データベースを操作する必要がなくなります。

定義ファイルを使用して、初期テーブルをデータベースに作成することをマイグレーション(migration: 移住)と言います。

 

まずは定義ファイルのテンプレートを作成しましょう。

Laravelでは、artisanのmakeコマンドでマイグレーションファイルのテンプレートを生成させることができます。

次のコマンドで、新しいtasksテーブルを作成するcreate_tasks_tableマイグレーションファイルが作成されます。

$ php artisan make:migration create_tasks_table --create=tasks
Created Migration: 2017_09_14_042531_create_tasks_table

create_tasks_tableはマイグレーションファイル名で、–createオプションではテーブル名を指定します。

詳しいコマンドの使用方法やオプションの意味については、次のようにhelpを使うと参照できます。

php artisan help make:migration

あとで説明しますが、ここでのテーブル名は複数形にしておくと良いでしょう。

database/migration以下に、2017_09_14_042531_create_tasks_table.phpが作成されます。

作成日時が付加されますが、マイグレーションを実行した際には日時の順にマイグレートされます。

ファイルを眺めてみると、up関数でtasksテーブルが作成されることが分かります。tasksテーブルには、主キーとしてid(自動インクリメント)は定義済みです。

 

ここで、タスク名もテーブルに保存できるように、ファイルに一行を追加して、nameというstring型のカラムを定義します。

<?php 
use Illuminate\Support\Facades\Schema; 
use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class CreateTasksTable extends Migration { 
/**
  * Run the migrations.
  *
  * @return void
  */
    public function up() { 
        Schema::create('tasks', function (Blueprint $table) { 
            $table->increments('id');
	    $table->string('name'); /* <---- */
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('tasks');
    }
}

このマイグレーションファイルを用いて、マイグレーションをします。

$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrating: 2017_09_14_042531_create_tasks_table
Migrated: 2017_09_14_042531_create_tasks_table

テーブルが作成されたか確認するため、データベースに接続してみましょう。

mysql> show tables from homestead;
+---------------------+
| Tables_in_homestead |
+---------------------+
| migrations          |
| password_resets     |
| tasks               |
| users               |
+---------------------+
4 rows in set (0.00 sec)

mysql> desc homestead.tasks;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra        |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255)     | NO   |     | NULL    |   
             |
| created_at | timestamp        | YES  |     | NULL    |   
             |
| updated_at | timestamp        | YES  |     | NULL    |   
             |
+------------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

mysql> select * from homestead.tasks;
Empty set (0.00 sec)

確かにtasksテーブルが作成され、nameカラムが作成されています。

データモデルの定義

Laravelでは、データベースとのデータのやりとりはEloquent object-relational mapper(ORM)という機能を介して行います。

Eloquentを使うことで、データベースとのやり取りが楽になります。

ここでは、Eloquentを介して扱うデータを、モデルとして定義します。

 

では、Taskモデルを定義しましょう。

モデル定義ファイルのテンプレートも、artisanで作成できます。

$ php artisan make:model Task
Model created successfully.

次のような空のTaskクラスを持つapp/Task.phpが作成されます。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Task extends Model
{
 //
}

これは空のクラスのままでこれ以上いじる必要がありません。

このクラスでは、データベースとの対応は明示的に定義していませんが、その場合にはクラス名を複数形(かつスネークケース)にした”tasks”テーブルと対応させられることになります。

これがテーブル名を複数形にした理由です。

 

ちなみに、Taskモデルの定義で -mオプションをつけて、「php artisan make:model Task -m」とすると、対応するtasksテーブルを作成するマイグレーションファイルも同時に作成されます。

今回はマイグレーションファイルは前項で別途作成しましたが、慣れた場合はこちらの方法でも良いでしょう。

routeの定義

ユーザがURLにアクセスした場合に定義された処理(Webページを表示する、タスクを登録するなど)が実行されますが、そのURLのことをroute(ルート)と呼びます。

Laravel 5.5では、routes/web.phpで定義されています。(Laravel 5.2ではapp/Http/routes.phpで定義されていました。)

 

web.phpを編集して、次の3つのルートを作成します。

  • 全タスクをリスト表示するルート
  • 新しいタスクを追加するルート
  • 既存のタスクを削除するルート

ひとまず無名関数は空にしておきます。

<?php

use App\Task;
use Illuminate\Http\Request;

Route::get('/', function () {
 //
});

Route::post('/task', function (Request $request) {
 //
});

Route::delete('/task/{task}', function (Task $task) {
 //
});

Routeのget(), post()メソッドは、それぞれGET, POSTで送られてきたデータを扱います。

DELETEのリクエストは送られて来ませんが、ここではdeleteとしておきます。Laravelに、POSTリクエストをDELETEリクエストとして見せかける方法があり、後ほどその処理を記述します。

ここまでの確認

ここまで、次の作業を行いました。

  • アプリケーションで使用する空のデータベースhomesteadを作成
  • タスクを保存するTasksテーブルをマイグレーションファイルに定義
  • マイグレーション
  • 空のTaskモデルを定義
  • 3つの空のルートを作成

ここまで作成したものを動作させてみましょう。次のコマンドで簡易httpサーバーを立てる事ができます。

php artisan serve

ブラウザで、http://localhost:8000/へアクセスしてみます。

すると、’/’のルートが呼ばれますが、まだ空ですので、空のページが返ってくるはずです。

 

この後も作成を続けますが、その都度ページを確認するようにすると、完成度合いがわかりやすくて良いでしょう。

 

以上、Laravel 5.5 入門として「基本のタスクリスト」を作成する [その1]でした。

次の記事へ続きます。

Laravel 5.5 入門として「基本のタスクリスト」を作成する [その2]

 

PHPフレームワーク Laravel入門
  • 掌田津耶乃 (著)
  • 秀和システム
  • 価格¥1,850(2025/05/14 16:32時点)
  • Amazonで口コミ・レビューを見る
Amazonで探す楽天で探すYahooで探す
コンピューター
highlightjs

関連記事

  • Speed Wi-Fi DOCK 5G 01の実機使用レビュー。
    2025年4月16日
  • AXE5400VとAX80Vの3つの違い。[Wi-Fiルーター]
    2025年4月7日
  • Archer AXE5400とAX80の3つの違い。[Wi-Fiルーター]
    2025年4月7日
  • Archer AXE5400とAX5400の3つの違い。[Wi-Fiルーター]
    2025年4月6日
  • Archer AX3000とAX1800の2つの違い。[Wi-Fiルーター]
    2025年4月6日
  • Archer AX3000VとAX23Vの2つの違い。[Wi-Fiルーター]
    2025年4月5日
  • Archer AX80とAX5400の3つの違い。[Wi-Fiルーター]
    2025年4月5日
  • Archer AX80VとAX73Vの3つの違い。[Wi-Fiルーター]
    2025年4月5日
カテゴリー
  • コンピューター
    • gnuplot & eps
    • mac
    • matplotlib
    • wordpress
  • ホーム・家電
    • アイロン
    • オーディオ
    • オーラルケア
      • ジェットウォッシャー
      • 音波振動歯ブラシ
    • カメラ
    • カー用品
    • クリーナー
    • テレビ、レコーダー
    • ドアホン
    • メンズ美容家電
      • ラムダッシュ
    • ルンバ
    • 一覧比較
    • 工具
    • 浄水器
    • 温水洗浄便座
    • 炊飯器
    • 空気清浄機・加除湿機
    • 空調・季節家電
    • 美容家電
      • フェイスケア
      • ヘアケア
      • ボディーケア
    • 血圧計
    • 調理器具
    • 電子レンジ
  • 健康
  • 家事
    • パン
    • 料理
    • 育児
    • 食品
      • おせち
      • コーヒー
  • 書籍
  • 知識
  • 趣味
    • ペン字
    • ロードバイク・クロスバイク
    • 車
    • 鉄道模型
    • 電子工作
サイト内検索
最近の投稿
  • モナークHGとモナークM7の4つの違い。[ニコン双眼鏡]
  • ニコン モナーク M7とM5の4つの違い。[双眼鏡]
  • Speed Wi-Fi DOCK 5G 01の実機使用レビュー。
  • RZ-760、GT-760、ST-760の違い。[ガス缶・CB缶]
  • RZ-730、RZ-730S、RZ-730SBK、RZ-730SWH、ST-Y450の違い。
  • TC-EA35WとTC-E123SBKの違いを比較。[スティッククリーナー]
  1. ホーム
  2. コンピューター
  3. Laravel 5.5 入門として「基本のタスクリスト」を作成する [その1]
  • ホーム
  • プライバシーポリシー

© カタログクリップ
contact@beiznotes.org

目次