ごみばこ

プログラムに関する備忘録などを書いています。

Laravel Note - todoリスト(テーブル・マイグレーション作成)

前回はプロジェクトとDBの作成を行いました。

今回はLaravelのコマンドを使用してテーブルの作成を行います。

アジェンダ

プロジェクトの設定

マイグレーションの作成を行う前に、.envというファイルを少し編集します。

このファイルにはプロジェクトで使用する様々な情報が記載されています。

今回変更するのは、DB_DATABASE, DB_USERNAME, DB_PASSWORDの3つです。

DB_DATABASE=quickstart
DB_USERNAME=quickstartuser
DB_PASSWORD=quickstartpass

設定の変更は完了です。

マイグレーションの作成

todoリストに使用するテーブルを作成します。

ここはチュートリアルに沿って、tasksというテーブルを用意します。

artisanコマンドを使用して、マイグレーションファイルを作成します。

php artisan make:migration create_tasks_table --create=tasks

こちらの記事でも書いたように、パスを指定して作成出来るので、ディレクトリを作ってから実行すると管理がしやすくなると思います。

上記コマンドを実行するとdatabase/migrations/に新しくファイルが生成されているので、編集します。(ディレクトリ指定した場合は任意のディレクトリを確認して下さい。)

<?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');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down() {}
}

ファイルの編集が出来たら、マイグレーションを実行してみましょう。

php artisan migrate

実行が成功していれば、quickstartにtasksテーブルが作成されているかと思います。

次はtodoの作成等を行っていきます。

Laravel Note - todoリスト(プロジェクト・DB作成)

前回welcomeページの表示を行いました。

Laravel5.2のチュートリアルであるtodoリストの作成をアウトプットとして行っていきます。

気づけば5.5にバージョンアップしていたので、5.5を使っていきます。

データベースにはMySQLを使用します。

アジェンダ

プロジェクトの作成

まずはプロジェクトの作成から行います。

プロジェクト名はチュートリアルに合わせてquickstartとします。

# どちらかのコマンドを実行
composer create-project laravel/laravel quickstart

laravel new quickstart

プロジェクトが作成されるまでに少し時間がかかります。

この間にDBの作成を行います。

DBの作成

todoリストで使用するDBの作成を行います。

加えてユーザーの作成と権限付与を行います。

# スキーマの作成
CREATE SCHEMA `quickstart` DEFAULT CHARACTER SET utf8;

# ユーザーの作成
CREATE USER 'quickstartuser'@'localhost' IDENTIFIED BY 'quickstartpass';

# 特定DBへの権限付与
GRANT ALL ON `quickstart`.* TO 'quickstartuser'@'localhost';

これでtodoリストで使用するDBの準備が出来ました。

次回はテーブルとマイグレーションの作成を行います。

※記事の内容に誤り、誤字・脱字等があればご指摘頂けると幸いです。

カラムの変更をする前に

laravelのマイグレーションでは簡単にテーブルが作れる。

カラムの変更も苦労しないが、よく読んで無かったので嵌った。

原因

  • doctrine/dbalを追加していなかった

とても初歩的…。

解決法

composer require doctrine/dbal

依存関係を追加するだけ。

おまけ

マイグレーションの作成も、パス指定で作成が可能。

自分の場合は、database/migrations/にフォルダを作成して下記のようにmake:migrationをしてる。

php artisan make:migration [filename] [--create or table] --path database/migrations/folder-name

make:modelでディレクトリを指定する

更新をサボってたので、少しでも書いておこうと思います。

php artisan make:model

そのまま実行すると、app直下にモデルクラスが作成されてしまいます。

ドキュメントには以下のように記述されています。

Models typically live in the app directory, but you are free to place them anywhere that can be auto-loaded according to your composer.json file.

通常はappディレクトリに配置されるが、オートロード可能なディレクトリであれば好きな場所に配置してもいいよって解釈してます。間違ってたら指摘して下さい。

解決法

下記のようにコマンドを実行すれば、app直下ですが、指定したディレクトリに作成されます。

php artisan make:model <Directory Name>/<Model Name>

オートロード云々のところはあまり把握出来ていないので、わかり次第加筆しようと思います。

参考URL

How do I instruct artisan to save model to specific directory?

Laravel Note - トップページの表示

少し前にLaravelを触ったのですが、色々とあり別のフレームワークを使用する状況に。
備忘録と学習を兼ねてLaravelについて書いていこうと思います。
タイトルの通り、今回はトップページの表示までを書いていきます。
誤字・脱字、記事の誤り等があればコメント宜しくお願い致します。

使用するもの

virtual boxの設定は割愛します、すみません。
公式ドキュメントを参照してください。

インストール

composerを使用してインストーラをダウンロードします。

composer global require "laravel/installer"

これでプロジェクト作成のコマンドが実行出来るようになります。

laravel new ProjectName

# composerの場合
composer create-project --prefer-dist laravel/laravel ProjectName

プロジェクトディレクトリで以下のコマンドを使用することで、ビルトインサーバーの起動が行えます。
ホストの設定を0.0.0.0とすることで、任意の端末からアクセス出来ます。

php artisan serve --host=0.0.0.0

# host, portを両方設定する場合
php artisan serve --host=xxxx --port=xxxx

上記のコマンドが問題なく実行できれば、設定したホストにアクセスしてみましょう。
Laravelと文字が書かれたページが表示されれば完了です↓ f:id:choco_0214:20170804010648p:plain

MySQL Workbenchからhomestead上のDBを操作する

目的

  • クエリの実行を少しでも楽にしたい
  • テーブルの作成も楽にしたい

手順

  • MySQL Workbenchを起動し、新しい接続の作成。([+]ボタンをクリック)
  • [Manage Server Connections]のダイアログが表示されたら、設定を以下のようにする。
    • [Connection Method]で[Standard TCP/IP over SSH]を選択。
    • [SSH Hostname]は127.0.0.1:2222(vagrant起動時に表示されるIP)を入力。
    • [SSH Username]はvagrantを入力。
    • Homestead.yamlで使用している非公開鍵を[SSH Key File]で選択。
    • MySQL Hostnameはlocalhostを設定。
    • MySQL Server Portはデフォルトの3306で問題なし。
    • Username, Passwordは接続するLaravelプロジェクト内の[.env]ファイルを参照。
    DB_USERNAME='connection DB name'
    DB_PASSWORD='DB password'

接続テストを実行してエラーが出なければ完了!

参考URL

MySQL WorkBenchで外部サーバへSSHを通して接続する方法

Homesteadで複数のフォルダをリンクさせる

手順

  • Homestead.yamlのfoldersを下記のように編集。
folders:
    - map: C:\laravel_1
      to: /home/vagrant/Code_1
    - map: C:\laravel_2
      to: /home/vagrant/Code_2
  • vagrantを再起動させて、追記したフォルダが追加されていたら完了。