Laravel에서 서비스 사용

다음 기사와 동일한 작업을 Laravel5.6에서 수행했습니다.
Laravel 5.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 방문

좋은 웹페이지 즐겨찾기