LoginSignup
1
2

More than 5 years have passed since last update.

Laravel データベース連携_データベース作成からデータベース参照してWeb表示まで

Posted at

①studentsというデータベースを作成
②データベースにダミーデータ投入
③studentsのデータベース情報をwebに表示する

命名規則

モデル ⇒ Student.php
コントローラー ⇒ StudentsController.php
ビューのフォルダ ⇒ student

モデルの作成

artisan コマンド実行

php artisan make:model Student

カラムの宣言

# vi app/Student.php
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Student extends Model
{
    //
        public $timestamps = false; //timesatampを利用しない
        protected $fillable = ['name', 'email','tel'];
}

仮データ投入

シーダ機能を用いる

php artisan make:seed StudentsTableSeeder

シーダファイルの編集

ダミーの名前を付与する。(便利だわ)

vi database/seeds/StudentsTableSeeder.php

vi database/seeds/StudentsTableSeeder.php


<?php

use Illuminate\Database\Seeder;

class StudentsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('students')->delete();
        $faker = Faker\Factory::create('ja_JP');
        for ($i = 0; $i < 10; $i++) {
                \App\Student::create([
                        'name'=> $faker->name(),
                        'email'=> $faker->email(),
                        'tel'=> $faker->phoneNumber()
                ]);
        }
    }
}

データベースにダミーデータを投入

php artisan db:seed --class=StudentsTableSeeder

ルーティング設定

vi router/web.php

Route::get('/student/list','StudentsController@getIndex');

コントローラの作成

artisanコマンドでコントローラのスケルトンを作成。

php artisan make:controller StudentsController

コントローラで表示先を指定する。(student.list)

vi app/Http/Controllers/StudentsController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class StudentsController extends Controller
{
    //
  public function getIndex()
  {
  $query = \App\Student::query();
  // 全件取得 +ページネーション
  $students = $query->orderBy('id','desc')->paginate(10);
  return view('student.list')->with('students',$students);
  }
}

Viewを作成

Bladeを利用して作成します。

親テーマ作成

三種類のファイルを作成します。

mkdir resources/views/layouts/partials

① vi resources/views/layouts/partials/header.blade.php

ources/views/layouts/partials/header.blade.php!-- header & grobal navi -->
<nav class="navbar navbar-default" style="background-color: #FFFFFF;">
  <div class="container-fluid">
  <div class="navbar-header">
  <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbarEexample2">
  <span class="sr-only">Toggle navigation</span>
  <span class="icon-bar"></span>
  <span class="icon-bar"></span>
  <span class="icon-bar"></span>
  </button>
  <a class="navbar-brand" href="#">
  <img alt="Laravel学習帳" src="/img/logo.png" style="height: 20px;">
  </a>
  </div>

  <div class="collapse navbar-collapse" id="navbarEexample2">
  <ul class="nav navbar-nav">
  <li class="active"><a href="#">menuA</a></li>
  <li><a href="#">menuB</a></li>
  <li><a href="#">menuC</a></li>
  </ul>
  </div>
  </div>
</nav>

② vi resources/views/layouts/partials/sidebar.blade.php

<!-- side bar -->
<div class="panel panel-default">
  <div class="panel-heading">
  Menu
  </div>
  <!-- <div class="panel-body"> -->
  <ul class="nav nav-pills nav-stacked">
  <li><a href=""><i class="glyphicon glyphicon-menu-right"></i> submenu1</a></li>
  <li><a href=""><i class="glyphicon glyphicon-menu-right"></i> submenu2</a></li>
  <li><a href=""><i class="glyphicon glyphicon-menu-right"></i> submenu3</a></li>
  <li><a href=""><i class="glyphicon glyphicon-menu-right"></i> submenu4</a></li>
  </ul>
  <!-- </div> -->
</div>

③vi resources/views/layouts/partials/footer.blade.php

<!-- footer -->
<footer class="footer">
  <div class="container">
  <p class="text-muted">Place sticky footer content here.</p>
  </div>
</footer>
~

Student表示用の子テーマを作成

mkdir resources/views/student/
vi resources/views/student/list.blade.php

@extends('layouts.layout')
@section('title', 'Tutrial for beginner')
@section('content')
 <div class="page-header" style="margin-top:-30px;padding-bottom:0px;">
  <h1><small>受講生一覧</small></h1>
  </div>
  <table class="table table-striped table-hover">
  <thead>
  <tr>
  <th>No</th>
  <th>name</th>
  <th>email</th>
  <th>tel</th>
  <th>opration</th>
  </tr>
  </thead>
  <tbody>
  @foreach($students as $student)
  <tr>
  <td>{{$student->id}}</td><td>{{$student->name}}</td><td>{{$student->email}}</td><td>{{$student->tel}}</td>
  <td>
  <a href="" class="btn btn-primary btn-sm">詳細</a>
  <a href="" class="btn btn-primary btn-sm">編集</a>
  <a href="" class="btn btn-danger btn-sm">削除</a>
  </td>
  </tr>
  @endforeach
  </tbody>
  </table>

 <!-- page control -->
 {!! $students->render() !!}

@endsection
1
2
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
2