LoginSignup
0
0

More than 3 years have passed since last update.

Laravel立ち上げ、とりあえず動かしてみる。

Last updated at Posted at 2020-05-30

学習のメモとしてlaravelの立ち上げを書いていきます。
前提としてcomposer等のインストールはすでに終えています。
この記事は速習Laravel6 という本を参考に書いています。

早速まずはターミナルで

composer create-project --prefer-dist laravel/laravel ファイル名

とすると、数多くのファイルがインストールされます。

php artisan serve

とすると、Laravelのサーバーが立ち上がります。

コントローラーを作成する

それが確認できたら、まずMVCのコントローラーから触っていきます。

コントローラーは、リクエストの受け取り、Modelの呼び出し、その結果をViewに反映という処理の司令塔です。

こんにちは、世界!という文字列を表示するサンプルを作ります。

php artisan make:controller HelloController

これでapp/http/Controllersフォルダ配下にHelloController.phpが生成されます。

HelloController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HelloController extends Controller
{
+    public function index()
+    {
+        return 'こんにちは世界';
+    }
}

returnで文字列を出力するアクションメソッドを追加しました。

ルーティング

ルートを定義するのは幾つか方法があるが、

Route::get(path,action)

が最もシンプルなメソッド。
引数actionには「コントローラー名@アクション名」つまり

web.php
<?php

use App\Http\Controllers\HelloController;
use Illuminate\Support\Facades\Route;

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

+Route::get('/hello/', 'HelloController@index');

これで
スクリーンショット 2020-05-29 23.27.42.png
画面が出ました。

モデルの基本

モデルとは、データベース/外部サービスへのアクセスをはじめ、ビジネスロジックを担うコンポーネント。
アプリの心臓部とも言えます。

それではデータベースの連携についてみていきましょう。

マイグレーション/シード

マイグレーションとは、テーブルレイアウトの定義をスクリプトから表し、コマンドラインから実行するための仕組み。

では早速、マイグレーション経由でテーブルを作成してみましょう。

php artisan make:migration create_books_table

これでマイグレーションファイルが作成されました。

create_xxxxxx_tableはマイグレーションファイルの名前です。

/app/database/migrationsのフォルダー配下にマイグレーションファイルが生成されます。

create_books_table.php
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateBooksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('books', function (Blueprint $table) {
+            $table->bigIncrements('id');
+            $table->string('isbn');
+            $table->string('title');
+            $table->integer('price');
+            $table->string('publisher');
+            $table->date('published');
+            $table->timestamps();
        });
    }

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

テーブル情報を定義しました。

マイグレーションを実行する。

php artisan migrate

ここでエラーが出て実行できませんでした。

そもそもデータベースを作っていなかったので、MySQLでtutorialという
データベースを作成し、.envファイルの中の


DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
+DB_DATABASE=tutorial
DB_USERNAME=root
DB_PASSWORD=

書き直します。

もう一度

php artisan migrate

スクリーンショット 2020-05-30 9.59.30.png

テーブルができているのが確認できます。

シーダー

このテーブルの中にダミーデータを入れていきたいと思います。これを行うのがシーダー

早速コマンドで自動生成しましょう。

php artisan make:seeder BooksTableSeeder

できたシーダーを編集します。

BooksTableSeeder.php
<?php

use Illuminate\Database\Seeder;

class BooksTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
+        DB::insert('insert into books (isbn, title,price,publisher,published) values ("978-4-8222-5399-8","Visual C# 2019超入門",2000,"日経BP" ,"2019-08-22")', [1, 'Dayle']);
    }
}

シーダーはそのまま実行できません。
対象のシーダーをアプリに登録しておく必要があります。

app/database/seeds フォルダー配下のDatabaseSeeder.phpを以下のように編集します。

DatabaseSeeder.php
<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
+        $this->call(BooksTableSeeder::class);

    }
}

シーダーを実行しましょう

php artisan db:seed

Database seeding completed successfully.
と出たらMySQLで確認してみましょう。
スクリーンショット 2020-05-30 10.25.06.png

ちゃんと入っていますね。

今回はこの辺で、次回はデータの取得などを行っていきます。

0
0
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
0
0