40
42

More than 5 years have passed since last update.

Laravel で Service を使う

Last updated at Posted at 2018-06-25

次の記事と同じことを、Laravel5.6 で行いました。
Laravel5.4でServiceを使ったプロジェクト構成

MariaDB の設定は、次と同じです。
Laravel で MariaDB の CRUD (その 1)

1) プロジェクトの作成

laravel new project_1

2) MariaDB を使う為の修正

app/Providers/AppServiceProvider.php を編集

app/Providers/AppServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;  // 追加
class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191);   // 追加
    }
// 略

3) .env の設定 (MariaDB の接続情報)

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=article
DB_USERNAME=scott
DB_PASSWORD=tiger123

4) モデルを入れるフォルダーの作成

mkdir app/Models

5) モデルとマイグレーションを作成

php artisan make:model Models/Hoge -m

database/migrations/2018_06_25_101244_create_hoges_table.php が出来る

6) database/migrations/2018_06_25_101244_create_hoges_table.php を編集

database/migrations/2018_06_25_101244_create_hoges_table.php
// 略
    $table->increments('id');
    $table->string('hoge'); // 追加
    $table->timestamps();
// 略

7) migrateしてテーブルを作成

php artisan migrate

次のテーブルができます。

MariaDB [city]> show tables;
+-----------------+
| Tables_in_city  |
+-----------------+
| hoges           |
| migrations      |
| password_resets |
| users           |
+-----------------+

8) 出来たテーブルにデータを入れます。

MariaDB [city]> insert into hoges set id='10',hoge='aaa';
Query OK, 1 row affected (0.07 sec)

MariaDB [city]> insert into hoges set id='11',hoge='bbb';
Query OK, 1 row affected (0.06 sec)

MariaDB [city]> insert into hoges set id='12',hoge='ccc';
Query OK, 1 row affected (0.07 sec)

9) app/Models/Hoge.php の編集

app/Models/Hoge.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Hoge extends Model
{
    protected $fillable = [     // 追加
        'hoge'          // 追加
    ];                  // 追加
}

10) サービスを入れるフォルダーの作成

mkdir app/Services

11) app/Services/HogeService.php を作成

app/Services/HogeService.php
<?php
namespace App\Services;
use App\Models\Hoge;
class HogeService{
    public function getHoge(){
        return Hoge::all();
    }
}

12) app/Providers/AppServiceProvider.phpのregisterに追加

app/Providers/AppServiceProvider.php
// 略
public function register()
    {
        $this->app->bind('App\Services\HogeService');
    }
// 略

13) ルートの作成

routes/web.phpに以下を追加

routes/web.php
// 略
Route::resource('hoge', 'HogeController');

14) コントローラーの作成

php artisan make:controller HogeController

15) app/Http/Controllers/HogeController.php を編集

app/Http/Controllers/HogeController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Services\HogeService;
class HogeController extends Controller
{
protected $hogeService;
    public function __construct(HogeService $hoge_service)
    {
        $this->hogeService = $hoge_service;
    }

    public function index(Request $request)
    {
        $hoges = $this->hogeService->getHoge();
        return view('hoge.index', compact('hoges'));
    }

    public function show($id){}
}

15) ビューを入れるフォルダーの作成

mkdir resources/views/hoge

16) resources/views/hoge/index.blade.php を作成

resources/views/hoge/index.blade.php
<!DOCTYPE html>
<html>
<head></head>
<body>
<h1>Hello World!</h1>
@foreach($hoges as $hoge)
<p>{{$hoge->hoge}}</p>
@endforeach
Jun/25/2018<p />
</body>
</html>

17) サーバーの起動

php artisan serve

18) ブラウザーで http://localhost:8000/hoge にアクセス
service_jun2501.png

40
42
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
40
42