7
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel入門覚書1: Laravelの基本を理解しよう

Posted at

Laravel入門覚書1: Laravelの基本を理解しよう


01:Laravelの基本を理解しよう

ここでは、この講座の目的・対象者・学習の進め方を確認します。それから、Laravelの特徴についても学習します。

Webアプリケーションフレームワークとは
Webアプリを開発するために便利な部品やツールをひとまとめにしたもの。
Webアプリケーションを短期間に効率よく開発できる。

Laravelの特徴

  • テンプレートエンジン(Blade)
  • データベース(O/Rマッパー:Eloquent)
  • 対話型コンソール(artisan tinker)
  • ユーザー認証 など

参考になるWebページ

公式・総論

Laravel - The PHP Framework For Web Artisans
https://laravel.com/

Laravel - ウェブ職人のためのPHPフレームワーク
http://laravel.jp/

Laravel ドキュメント
https://readouble.com/laravel/

Laravel - Wikipedia
https://ja.wikipedia.org/wiki/Laravel

チュートリアル

Laravel入門: 初心者でも10分でWebサービスを作れる!
PHPフレームワークLaravelとPaizaCloudの使い方 - paiza開発日誌
https://paiza.hatenablog.com/entry/2018/02/16/paizacloud_laravel

Laravel学習帳 - はじめてのLaravel入門サイト -
http://laraweb.net/

Laravel5でシンプルなCRUDアプリを開発する - アシアルブログ
http://blog.asial.co.jp/1360

評価

Laravelのここがすごい - Qiita
https://qiita.com/nunulk/items/78d70ac809948b470bbc

Laravelの開発で感じたメリットとデメリットをまとめてみた
ぐるなびをちょっと良くするエンジニアブログ
http://developers.gnavi.co.jp/entry/laravel-2

Laravelでウェブアプリケーションをつくるときのベストプラクティスを探る - Qiita
https://qiita.com/nunulk/items/b1e2da51b5dabab92da0


02:アプリケーションを用意しよう

ここでは、Laravelを使う準備として、アプリケーション用ディレクトリを用意します。Laravelでは、このディレクトリに、アプリケーションに必要な機能を作り込んでいきます。また、このディレクトリを用意するだけで、Webサーバーを起動して、動作を確認できます。

####このチャプターで使用したコマンド
カレントディレクトリの確認

$ pwd

ディレクトリの一覧
$ ls

PHPのバージョンを確認
$ php -v

Laravelのバージョンを確認
$ laravel -V

アプリケーション用ディレクトリを自動生成する

$ laravel new bbs

####ディレクトリ作成を高速化するには
"laravel new"コマンドの実行前に以下のような設定をしておけば、コマンドの実行時間を短くできます。

$ composer config -g repositories.packagist composer 'https://packagist.jp'
$ composer global require hirak/prestissimo

####Webサーバーを起動

$ cd bbs
$ php artisan serve

####ブラウザで以下にアクセスすると、アプリのWebページを表示する

なお、LaravelのサーバはHTTPで動作していますが、PaizaCloudではこれをHTTPSに変換しています。またサーバはlocalhostで動作していますが、PaizaCloudでは"https://localhost-サーバ名.paiza-user.cloud:ポート番号"というURLでlocalhostに接続できるようになっています。

Webサーバーを停止するには、ターミナルで、キーボードで「CTRL」キー(コントロールキー)を押しながら「C」のキーを押す。

Artisanとは

ターミナルで「artisan」(アーティサン)コマンドを使ってLaravelの機能を呼び出すことができます。LaravelでWebアプリケーションを開発するときに役に立つ、数多くのコマンドを提供しています


演習課題「Laravelのアプリケーションディレクトリを作成する」
右のターミナルで、現在のディレクトリに「myblog」というLaravelのアプリケーションディレクトリを作成してください。

laravel new myblog

演習課題「Laravelサーバーを起動する」
LaravelのWebサーバーを起動してください。

php artisan serve


##03:Laravel で HelloWorld
ここでは、Laravelのアプリケーションで簡単なメッセージを表示します。Hello Worldを表示して、Laravelでアプリケーションを作るための基本操作を理解しましょう。

Welcomeページを修正する
bbs/resources/views/welcome.blade.php

paiza bbs

= date('Y/m/d H:i:s') ?>


演習課題「Welcomeページを修正する」
右の環境には、Laravelで「myblog」というアプリケーションのディレクトリを作ってあります。

このアプリケーションのwelcome.blade.phpを修正して、以下のタイトルを表示するようにしてください。

Hello paiza

模範解答1
bbs/resources/views/welcome.blade.phpの'Laravel'を変更する

            <div class="title m-b-md">
                Hello paiza
            </div>

##04:1行掲示板を作ろう
ここでは、Laravelで作る1行掲示板の概要を整理します。また、掲示板で必要になるデータベースを準備しましょう。

データベース構成
1行掲示板のデータベースには、次の情報が必要になります。

  • データベース : mybbs
  • テーブル : articles
  • カラム : id, content, created_at, updated_at

このデータベースは、phpMyAdminで用意しておきます。

アプリケーションのデータベース設定
アプリケーションからデータベースを呼び出すには、次のデータベース設定が必要です。

「.env」ファイルは、隠しファイルになっているので、「bbs」ディレクトリを右クリック->「隠しファイルを表示」で表示しておきます。

bbs/.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mybbs
DB_USERNAME=root

DB_PASSWORD=secret


演習課題「Laravelのデータベース環境を設定する」
右の環境では、「myblog」というLaravelのアプリケーションディレクトリを作成してあります。また、MySQLに「myblog」用のデータベース「myblogdb」が作成してあります。

laravelの環境設定ファイルに以下の情報を入力して、このデータベースにアプリケーションから接続できるようにしてください。

  • DB_DATABASE=myblogdb
  • DB_USERNAME=root
  • DB_PASSWORD=(不要)

採点して、すべてのジャッジに正解すれば、演習課題クリアです!

模範解答1
隠しファイルの「.env」に設定情報を入力する
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myblogdb
DB_USERNAME=root

DB_PASSWORD=secret


##05:モデルとコントローラを用意する
ここでは、Laravelから1行掲示板のデータベースを操作するモデルを用意します。モデルを使うと、PHPのオブジェクトとして、データベースのレコードを操作できるようになります。

モデルとマイグレーション、コントローラを作成

$ cd bbs
$ php artisan make:model Article -m -c -r

contentカラムを追加
database/migrations/2018_xx_xx_xxxxxxxx_create_articles_table.php

public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->increments('id');
$table->string('content');
$table->timestamps();
});
}

マイグレーション実行

$ php artisan migrate

参考になるWebページ
【Laravel】わりとよく使うArtisanコマンド集 - Qiita
https://qiita.com/sola-msr/items/a09b857c5e7f7c88d01d


演習課題「モデルにカラムを追加しよう」
右の環境には、Laravelの「myblog」というアプリケーションを作成してあります。また、MySQLに「myblogdb」というデータベースを作成してあります。

このアプリケーションに、Diaryという名前のモデルとコントローラ・マイグレーションファイルを自動生成して、Diaryテーブルに「topic」というカラムを追加してください。

手順は次の通りです。

  • モデルとコントローラ・マイグレーションファイルを自動生成する
  • マイグレーションファイルに「topic」カラムを追加する
  • 生成したマイグレーションファイルの設定をデータベースに反映する

採点して、すべてのジャッジに正解すれば、演習課題クリアです!

模範解答1
php artisan make:model Diary -m -c -rで、各ファイルを自動生成

    public function up()
    {
        Schema::create('diaries', function (Blueprint $table) {
            $table->increments('id');
            $table->string('topic');
            $table->timestamps();
        });
    }

##06:ルーティングを定義しよう
ここでは、Laravelの1行掲示板のルーティングを設定します。ルーティングを使うことで、特定のアドレスにアクセスした時、どの機能を呼び出すか設定できます。

ルーティングとは
どのアドレスにアクセスした時、どの機能を呼び出すか設定できます。LaravelによるWebアプリケーションでは、機能に応じて、アドレスを割り当てておきます。そして、ルーティングで、リクエストに応じて実行するコードを切り替えます。

1行掲示板のルーティング(一覧画面、詳細画面)
bbs/routes/web.php

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

Route::get('/articles', 'ArticleController@index')->name('article.list');
Route::get('/article/{id}', 'ArticleController@show')->name('article.show');

paiza-cloud用https対応
app/Providers/AppServiceProvider.php

class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
\URL::forceScheme('https');
}

/**
 * Register any application services.
 *
 * @return void
 */
public function register()
{
    //
}

}


演習課題「ルーティングを設定する」
右の環境には、Laravelで「myblog」というアプリケーションを作ってあります。

このアプリケーションのルーティングを設定して、以下のURLで、「DiaryController」(ダイアリーコントローラ)のindexメソッドを呼び出すようにしてください。

https://localhost:8000/diary

ブラウザで表示した際に、404エラーが発生していなければ問題ありません。

模範解答1
myblog/routes/web.phpに、ルートを追加する

Route::get('/diary', 'DiaryController@index')->name('diary.list');


##07:コントローラとビューを作成しよう
ここでは、Laravelの1行掲示板のために、コントローラとビューを作成します。そして、プログラムを制御するコントローラと、ページの見た目を記述するビューの使い方を学習します。

コントローラからデータを渡す
/bbs/app/Http/Controllers/ArticleController.php:

$message]); } } ビューでデータを表示する /bbs/resources/views/index.blade.php paiza bbs

paiza bbs

{{ $message }}

------------------------------------------------------------- 演習課題「コントローラからビューを呼び出す」 右の環境には、Laravelで「myblog」というアプリケーションを作ってあります。 このアプリケーションで、以下のURL(ユーアールエル)にアクセスしたら、ビューの「index.blade.php」を呼び出して表示するように、コントローラのindexメソッドを修正してください。 ``` https://localhost:8000/diary ``` 採点して、すべてのジャッジに正解すれば、演習課題クリアです! 模範解答1 ~/myblog/app/Http/Controllers/DiaryController.phpのindexメソッドで、indexビューを呼び出す public function index() { return view('index'); } ------------------------------------------------------------- 演習課題「コントローラからビューにデータを渡す」 右の環境には、Laravelで「myblog」というアプリケーションを作ってあります。このアプリケーションでは、以下のURL(ユーアールエル)にアクセスしたら、ビューの「index.blade.php」を呼び出して表示するようになっています。 コントローラのindexメソッドを修正して、$message変数をビューに渡すようにしてください。 また、コントローラから渡された$message変数をpタグで表示するようにindex.blade.viewを書き換えてください。 ``` https://localhost:8000/diary ``` 採点して、すべてのジャッジに正解すれば、演習課題クリアです! 模範解答1 indexメソッドで、view関数の引数に、['message' => $message] を追加し、index.blade.phpに

{{ $message }}

を追加する // DiaryController.php public function index() { $message = 'Welcome to my page!'; return view('index', ['message' => $message]); } // index.blade.php

myblog Index Page

{{ $message }}

------------------------------------------------------------- ##08:記事一覧を作成しよう ここでは、1行掲示板の記事一覧を作成します。そのために、コントローラで、モデルからデータ一覧を取り出して、ビューで一覧表示します。 コントローラで、記事一覧を取得する /bbs/app/Http/Controllers/ArticleController.php: $message, 'articles' => $articles]); } } ビューで記事一覧を表示する /bbs/resources/views/index.blade.php paiza bbs

paiza bbs

{{ $message }}

@foreach ($articles as $article)

{{ $article->content }}

@endforeach ------------------------------------------------------------- 演習課題「MyBlogのデータ一覧を表示しよう」 右の環境には、Laravelで「myblog」というアプリケーションを作ってあります。このアプリケーションで、以下のURL(ユーアールエル)にアクセスしたら、ビューの「index.blade.php」を呼び出して表示します。 ``` https://localhost:8000/diary ``` このアプリケーションを修正して、「myblog」アプリケーションのサンプルデータ一覧を表示するよう、DiaryController.phpのindexメソッドを修正してください。一覧データの変数名はdiariesとします。 また、index.blade.phpを編集して、pタグで一覧データのtopicを表示してください。 採点して、すべてのジャッジに正解すれば、演習課題クリアです! 模範解答1 /bbs/app/Http/Controllers/DiaryController.phpのindexメソッドで、データベースの全てのデータを取得して、diariesに代入する。foreachで一覧データのtopicを全て表示する。 // DiaryController.php public function index() { $message = 'Welcome to my page!'; $diaries = Diary::all(); return view('index', ['message' => $message, 'diaries' => $diaries]); } // index.blade.php

myblog Index Page

{{ $message }}

@foreach ($diaries as $diary)

{{ $diary->topic }}

@endforeach ------------------------------------------------------------- ##09:詳細画面を作ろう ここでは、1行掲示板の記事を個別表示する画面を作成します。そのために、コントローラで、モデルから、指定したデータを取り出して、ビューで表示します。 コントローラのshowメソッドで、特定の記事を取り出す /bbs/app/Http/Controllers/ArticleController.php: public function show(Request $request, $id, Article $article) { $message = 'This is your article ' . $id; $article = Article::find($id); return view('show', ['message' => $message, 'article' => $article]); } showビューで、指定の記事を表示する /bbs/resources/views/show.blade.php paiza bbs

paiza bbs

{{ $message }}

{{ $article->content }}

一覧に戻る

記事一覧から個別の記事にリンクする /bbs/resources/views/index.blade.php paiza bbs

paiza bbs

{{ $message }}

@foreach ($articles as $article)

{{ $article->content }}

@endforeach ------------------------------------------------------------- 演習課題「MyBlogの特定データを表示しよう」 右の環境には、Laravelで「myblog」というアプリケーションを作ってあります。このアプリケーションで、以下のURL(ユーアールエル)にアクセスしたら、ビューの「index.blade.php」を呼び出して表示します。 ``` https://localhost:8000/diary ``` このアプリケーションに、以下のURLで「myblog」アプリケーションの特定データを表示するよう、DiaryController.phpのshowメソッドを修正してください。一覧データの変数名はdiaryとします。 ``` https://localhost:8000/diary/(id) ``` 模範解答1 /bbs/app/Http/Controllers/DiaryController.phpのshowメソッドで、データベースの指定データを取得して、diaryに代入する。 public function show(Request $request, $id, Diary $diary) { $diary = Diary::find($id); return view('show', ['diary' => $diary]); } ------------------------------------------------------------- 参照元: https://paiza.jp/works/laravel/primer
7
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?