Laravel入門トップページ


目次

  1. Composerのダウンロードとインストール
  2. コメント掲示板を作成してみよう
  3. リレーションシップを使いこなそう
    1. 概要
    2. Laravelプロジェクトの作成と初期設定
    3. 一対多のリレーションシップ
    4. 多対多のリレーションシップ
    5. ビューを使った表示
    6. 学部の情報を表示・変更する
    7. キャンパスの情報を表示・変更・削除する
    8. 学生の情報を表示・変更・削除する
  4. ユーザ認証の機能を実現しよう
  5. マルチ認証の機能を実現しよう
  6. MongoDB に接続しよう
  7. キューを利用しよう
  8. コマンド(コンソール)を利用しよう
  9. 本番環境にデプロイしよう

リレーションシップを使いこなそう

Laravelプロジェクトの作成と初期設定

新たなプロジェクトを作成して,「一対多」や「多対多」のリレーションシップを使えるようにしよう.

目次に戻る

プロジェクトの新規作成

laravelRelationship というプロジェクトを新規に作成する.

[GakuinHana@rin06 Documents]$ pwd ⏎
/home/GakuinHana/Documents
[GakuinHana@rin06 Documents]$ cd laravel/ ⏎
[GakuinHana@rin06 laravel]$ ls ⏎
composer.phar
[GakuinHana@rin06 laravel]$ php composer.phar create-project --prefer-dist laravel/laravel laravelRelationship ⏎
You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug
Installing laravel/laravel (v5.4.30)
  - Installing laravel/laravel (v5.4.30)
    Downloading: 100%

Created project in laravelRelationship

...(中略)...

Generating autoload files
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize
Generating optimized class loader
The compiled services file has been removed.
> php artisan key:generate
Application key [base64:zKbvG7T0j9968O/jC6WtYgP8Uvq2yI4dyNpu8XbH+WM=] set successfully.
[GakuinHana@rin06 laravel]$

Git の初期設定をしているのであれば,Git でコミットしておく.

[GakuinHana@rin06 laravel]$ cd laravelRelationship ⏎
[GakuinHana@rin06 laravelRelationship]$ ls ⏎
app        composer.json  database      public     routes      tests
artisan    composer.lock  package.json  readme.md  server.php  vendor
bootstrap  config         phpunit.xml   resources  storage     webpack.mix.js
[GakuinHana@rin06 laravelRelationship]$ git init ⏎
Initialized empty Git repository in /home/GakuinHana/Documents/laravel/laravelRelationship/.git/
[GakuinHana@rin06 laravelRelationship]$ git add . ⏎
[GakuinHana@rin06 laravelRelationship]$ git commit -m"initial commit" ⏎
[master (root-commit) 3fa9439] initial commit
 81 files changed, 6481 insertions(+)

 ...(中略)...

[GakuinHana@rin06 laravelRelationship]$ git log ⏎
commit 3fa94396620e7b32f5a6ac6e50444c753973b176
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Thu Jun 14 13:10:55 2018 +0900

    initial commit
[GakuinHana@rin06 laravelRelationship]$

なお,プロジェクトの中に保存されている .gitignore は Git の管理に含めないファイルやフォルダの情報を設定するファイルである.つまり,.gitignore に記載されたファイルは Git で無視される.例えば,.env のような環境設定ファイルはデータベースへの接続パスワードなどが記載されることがあるので,Git で管理し,GitHub で公開してしまうとパスワードが漏洩してしまうことになりかねない.また,sqlite のデータベースファイルは database/*.sqlite として保存されるがこれも Git に含めないようにしないと,開発/テスト用データベースの更新がその都度Gitに登録されてしまうことになる.これは database/.gitignore に記載されている.

[GakuinHana@rin06 laravelRelationship]$ ls -a ⏎
.             .gitattributes  composer.json  phpunit.xml  server.php
..            .gitignore      composer.lock  public       storage
.env          app             config         readme.md    tests
.env.example  artisan         database       resources    vendor
.git          bootstrap       package.json   routes       webpack.mix.js
[GakuinHana@rin06 laravelRelationship]$ cat .gitignore  ⏎
/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
/.idea
/.vagrant
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
.env
[GakuinHana@rin06 laravelRelationship]$ cd database ⏎
[GakuinHana@rin06 database]$ ls -a ⏎
.  ..  .gitignore  factories  migrations  seeds
[GakuinHana@rin06 database]$ cat .gitignore ⏎
*.sqlite
[GakuinHana@rin06 database]$ cd .. ⏎
[GakuinHana@rin06 laravelRelationship]$

目次に戻る

.env に設定を記述

.env ファイルを修正する.DB_CONNECTIONsqliteに変更し,DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD の行を削除するか,先頭に # を付けてコメントアウトする.

.env (抜粋)
DB_CONNECTION=sqlite
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=homestead
# DB_USERNAME=homestead
# DB_PASSWORD=secret

タイムゾーンと言語の設定

プロジェクトの設定ファイル config/app.php を編集し,タイムゾーンをAsia/Tokyoに,言語をjaに変更する.

config/app.php (抜粋)
    /*
    |--------------------------------------------------------------------------
    | Application Timezone
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default timezone for your application, which
    | will be used by the PHP date and date-time functions. We have gone
    | ahead and set this to a sensible default for you out of the box.
    |
    */

    'timezone' => 'Asia/Tokyo',

    /*
    |--------------------------------------------------------------------------
    | Application Locale Configuration
    |--------------------------------------------------------------------------
    |
    | The application locale determines the default locale that will be used
    | by the translation service provider. You are free to set this value
    | to any of the locales which will be supported by the application.
    |
    */

    'locale' => 'ja',

目次に戻る

空のデータベースファイルを作成する

Sqlite用に空のデータベースファイル database/database.sqlite を作成する.

[GakuinHana@rin06 laravelRelationship]$ ls ⏎
app        composer.json  database      public     routes      tests
artisan    composer.lock  package.json  readme.md  server.php  vendor
bootstrap  config         phpunit.xml   resources  storage     webpack.mix.js
[GakuinHana@rin06 laravelRelationship]$ cd database ⏎
[GakuinHana@rin06 database]$ ls ⏎
factories  migrations  seeds
[GakuinHana@rin06 database]$ touch database.sqlite ⏎
[GakuinHana@rin06 database]$ ls ⏎
database.sqlite  factories  migrations  seeds
[GakuinHana@rin06 database]$ cd .. ⏎
[GakuinHana@rin06 laravelRelationship]$

目次に戻る

Webサーバの起動と終了

Webサーバを起動して,Webブラウザからプロジェクトのトップページにアクセスする.このとき,ポート番号は他の学生と重複しないように8000から8400の番号を指定する.例えば,8000番台の下3桁に自分の学籍番号の下3桁を指定すると良い.

[GakuinHana@rin06 laravelRelationship]$ php artisan serve --host=rin06.ba.kobegakuin.ac.jp --port 8385 ⏎
Laravel development server started: <http://rin06.ba.kobegakuin.ac.jp:8385>

Webブラウザのアドレスバーにhttp://rin06.ba.kobegakuin.ac.jp:8385 を入力すれば,次のような画面が出るはず.

laravel-1

Webサーバを停止するにはCtrl + C を押す.

[GakuinHana@rin06 laravelRelationship]$ php artisan serve --host=rin06.ba.kobegakuin.ac.jp --port 8385 ⏎
Laravel development server started: <http://rin06.ba.kobegakuin.ac.jp:8385>
[Thu Jun 14 13:34:46 2018] 10.106.134.128:58426 [200]: /favicon.ico
^C
[GakuinHana@rin06 laravelRelationship]$

目次に戻る

Git の確認

.env と config/app.php を修正したが .env は.gitignore に指定されているファイルであるので,git status で修正が確認できるのは config/app.php だけである.この段階で config/app.php の変更を Git でコミットしておく.

[GakuinHana@rin06 laravelRelationship]$ git status ⏎
# On branch master
# Changes not staged for commit:
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	modified:   config/app.php
#
[GakuinHana@rin06 laravelRelationship]$ git add config/app.php ⏎
[GakuinHana@rin06 laravelRelationship]$ git commit -m"config/app.phpの設定" ⏎
[master e991b11] config/app.phpの設定
 1 file changed, 2 insertions(+), 2 deletions(-)
 mode change 100644 => 100755 config/app.php
[GakuinHana@rin06 laravelRelationship]$ git log --oneline ⏎
e991b11 config/app.phpの設定
3fa9439 initial commit
[GakuinHana@rin06 laravelRelationship]$

目次に戻る