laravelのシンプルな機能でデータベースから値を取得し画面に表示する

はじめに

laravelのrouterとModelのみのシンプルな機能でデータベースから値を取得し画面に表示する。

modelとmigrationを追加

-mオプションでmigrationファイルも一緒に作ってくれるようになる。

php artisan make:model Photo -m

成功したようだ。

migrationディレクトリ配下にmigrationファイルも一緒に作られた。

注意したいのが、“` Photo “` という名前で作ったのに、migrationファイルの中では複数形の “`  photos “` になっているという点だ。

今回、path,imageable_id,imageable_typeというカラムを追加した。

    public function up()
    {
        Schema::create('photos', function (Blueprint $table) {
            $table->increments('id');
            $table->string('path');
            $table->integer('imageable_id');
            $table->string('imageable_type');
            $table->timestamps();
        });
    }

migration を実施

$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table
Migrating: 2019_12_03_153039_create_photos_table
Migrated:  2019_12_03_153039_create_photos_table

成功したようだ

データを投入する

MySQL workbenchを用いてデータを投入する

今回は上記データを入れた。

Modelを編集する

appディレクトリ配下にphp artisanコマンドで生成されたModelは格納される。
 
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Photo extends Model
{
    //
    public function imageable(){
        return $this->morphTo('App\Photo');
    }
}

Photoテーブルを参照することとする。

Routerを編集する

Laravel 5.5では、routesディレクトリ配下の“` web.php “`がrouterの役割を担っている。

以下の通り修正する

<?php

use App\Photo;

Route::get('user/photos', function(){
    $user = Photo::find(1);
    return $user->path;
});

結果

無事データベースの中の値の取得に成功した