1
3

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 5 years have passed since last update.

Laravel5基本機能Tips&ブロックチェーン

Last updated at Posted at 2019-03-01

#概要#

目的:MVCのWebアプリケーション開発用のオープンソースであるLaravelについて基本機能を調査して記録した。今後、欲しい情報をAPIなどからバックエンドで取得し見やすいUIにまとめグラフ化する予定である。

#開発環境#

-PHP5
-MySQL
-laravel5

  • ローカル
  • mac osx
  • (XAMPP)
  • Vscode
  • 未定:リモートレンタルサーバー(AWS)、Docker
    ーNanoppol API

主な参照記事:Laravel5 入門 インストールからMVCの基本機能をさっと眺める
[リンク](https://blog.hrendoh.com/getting-start-and-overview-of-laravel5/)

1 インストール&ローカル環境構築手順(Windows、Mac)
2 ルーティング
3コントローラー
4 ビュー
 4.1 基本的なビューの呼び出し方
 4.2 Bladeテンプレート
 4.3 Asset
5データベース操作
 5.1 接続設定
 5.2 モデル (ORM)
 5.3 マイグレーション
 5.4 モデルの利用
6 テスト
 6.1 データベースを利用するテスト
 6.2 テストデータベースのマイグレーション
7 標準機能について
 7.1Authについて
 7.2 使用可能なライブラリについて
 7.3 JavaScriptフレームワークについて(Vue.jsなど)

8  その他
 8.1 よく使うコマンドや実装について
         
#1 インストール&ローカル環境構築手順(Windows、Mac)

   Laravel プロジェクトの作成

  Laravelインストール手順は、上記の手順を参照

$ composer create-project laravel/laravel --prefer-dist <project name>

  
$ php artisan serve Laravel development server started on http://localhost:8000/
artisanコマンドは、 Artisan CLI Usage を参照。artisan listで使用可能なコマンドは右のコマンドで確認できる。

$ php artisan list

#2ルーティング#
  ルーティングは app/Http/routes.php に記述する
##// app/Http/routes.php
<?php
Route::get('/', 'WelcomeController@index');
   上記は、プロジェクトの作成後のデフォルト、’/’を
   WelcomeControllerの indexメソッドにマッピングしている

#3コントローラー#

コントローラーは、app/Http/Controllersに
App\Http\Controllers\Controllerを継承するクラスを置く
artisanコマンドでもコントローラーを生成可能
$ php artisan make:controller ArticleController
生成されるコントローラーはRestfullなリソースアクセスを提供する
RESTful Resource Controllers

#4 ビュー#

基本的なビューの呼び出し方
概要は、The BasicsのViews を参照
ビューのファイルは、resources/viewsに置く
ビューへ渡すデータは、view関数の第二引数に渡す
return view('greeting', ['name' => 'James']);
ビュー側は以下のように、渡されたマップのキーで値を参照できる

// resources/views/greeting.php <html> <body> <h1>Hello, <?php echo $name; ?></h1> </body> </html>

resources/viewsのサブディレクトリに配置したビューの呼び出しは、以下のようにドットで連結して呼び出す(‘/’でも呼び出せる)

return view('article.create');

#Asset#
Laravel5 では、CSS、JavascriptをビルドするGulp タスク Laravel Elixir が標準で提供されている
プロジェクト直下のgulpfile.jsを見てみると、resources/assets/less/app.lessをビルドするタスクがはじめから設定されている

    // gulpfile.js
var elixir = require('laravel-elixir');

elixir(function(mix) {
mix.less('app.less');
});

npm実行環境とgulpをインストールして、プロジェクト直下にて以下のコマンドを実行する

$ npm install

開発中はgulp watchしておけば、lessの修正が自動で反映される

$ gulp watch

#5 データベース操作#
Basic Database Usage の Configuration によると対応データベースは、
MySQL, Postgres, SQLite, SQL Server と豊富
参照URL:laravel データベースの接続、マイグレーションによる

テーブル作成
https://qiita.com/ryo2132/items/a1c8119b00799d3aed00
LaravelでMAMPのMySQLに接続する
https://qiita.com/kei4eva4/items/480448b83df25774fc74

#接続設定#
データベースへの接続設定は、config/database.phpに記述する
Laravelのルートディレクトリ.envがあり、環境ごとの設定はこちらに記述
Environmentの設定については、LaravelはDotEnv PHPを利用する
MySQLを使用し Read/Write接続を分けない場合は、config/database.phpではなく.envに接続情報を記述する
デフォルトは以下の.env.exampleがインストール時に.envにコピーされる
(homesteadは、MySQLが.env.exampleの内容に合わせてセットアップ済み)

#// .env#

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

参考: Laravel 5.0 – Environment Detection & Environment Variables
モデル (ORM)

Laravelには、Eloquent ORMというActiveRecord実装がある
モデル生成の artisan コマンドが用意されている

$ php artisan make:model Article

app直下に以下のBlog.phpが生成される

#// app/Blog.php#
`<?php

  namespace App;

 use Illuminate\Database\Eloquent\Model;

  class Article extends Model
 {
  //
  }

$tableプロパティに明示的にテーブル名を指定していないので、
このArticleクラスの場合は、articlesテーブルにアクセスする

マイグレーション

上記のArticleモデルを保存するarticlesテーブルを追加する
マイグレーションを作成する場合、以下のように

 artisan mke:migration コマンドを実行する
 $ php artisan make:migration create_articles_table
 Created Migration: 2015_06_09_164737_create_articles_table

マイグレーションファイルはdatabase/migrationsに作成される
(モデル作成時、artisan make:modelコマンドにオプション-mを付けると、モデルと同時にマイグレーションも生成される)
マイグレーションの書き方はWriting Migrationを参照
オートインクリメントのレコードIDと、文字列のtitleとtextをフィールドに持つarticlesテーブルを作成するマイグレーションは以下のようになる

  database/migrations/2015_06_09_164737_create_articles_table

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

 class CreateArticlesTable extends Migration
  {
   /**
    * Run the migrations.
    *
    * @return void
    */
       public function up()
     { 
         Schema::create('articles',                  
         function($table)
         {
         $table->increments('id');
         $table->string('title');
         $table->text('text');
         $table->timestamps();});
                                }
     /**
     * Reverse the migrations.
     *
     * @return void
     */
        public function down()
     {
        Schema::drop('articles');
                               }
                                }

timestampsは、インスタンスのdateTime型のupdated_atおよびcreated_at列マイグレーションはmigrateコマンドで適用
$ php artisan migrate 
Illuminate/Database/Eloquent/Model – Laravel API
モデルの利用
コントローラーでモデルを利用するには、インポートする
モデル操作は、Modelクラスのファサードおよびインスタンスメソッドで行う
Illuminate/Database/Eloquent/Model – Laravel API

#RESTFullコントローラーの実装例#
// app/Http/Controllers/ArticleController" highlight="7, 15, 21
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Article;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::all();
return view('article.index', ['articles' => $articles]; }
public function destroy($id)
{
$article = Article::find($id);
$article->delete(); }}

#6 テスト#
データベースを利用するテスト
Laravel5では、テスト時にデータベースを切り替える仕組みを標準で用意していない
必要な環境変数はphpunit.xmlに記述する
データベースだけ切り替られれば良いのでDB_DATABASEのみ追加する

// phpunit.xml

テストデータベースのマイグレーション
マイグレーションは、DatabaseMigrationsトレイトを利用して、テストごとにMigrationを実行する

  //tests/ArticleTest
  <?php
  use Illuminate\Foundation\Testing\WithoutMiddleware;
  use Illuminate\Foundation\Testing\DatabaseMigrations;
  use Illuminate\Foundation\Testing\DatabaseTransactions;

    class ArticleTest extends TestCase
       {
           use DatabaseMigrations;
                                    }

#7 標準機能について

7.1Authについて
Laravel5.2からmake:authでViewが生成できるようになった
参照:Laravelの標準Authentication(Auth)の動きを調べてみる
   
7.2 使用可能なライブラリについて
Laravelと合わせて使いたいライブラリ
・Pusher
     PusherはPHPでwebsocket(双方向データ通信)を行うためのライブラリ 
    参照URL:PusherはPHPでwebsocket(双方向データ通信)を行う
・Carbon
  PHPで時間を扱うDateTimeのラッパーライブラリ。

   参照URL:PHPで日付時刻処理を書くならCarbonを使うべき
参照URL:Laravelと合わせて使いたいライブラリ5選

7.3 JavaScriptフレームワークについて(Vue.jsなど)
Laravelとフロントエンド

Laravelでは、5.3から、Vue.jsが標準のJavaScriptフレームワークになっているさらに、5.4では、フロントエンドのビルドツールが、gulpベースのElixirから、WebpackベースのMixに変わった。Laravelをインストールすれば、Web APIはLaravelで作って、SPA(Single Page Application)をVue.jsで組む、といったことが簡単にできるようになっている

#8.1 よく使うコマンドや実装について

参照URL:
https://walking-succession-falls.com/laravel%E3%81%AE%E5%9F%BA%E6%9C%AC%E6%A9%9F%E8%83%BD%E3%80%81%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E3%81%97%E3%81%9F%E5%B0%8F%E6%8A%80%E3%81%BE%E3%81%A8%E3%82%81/

1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?