次の記事と同じことを、Laravel5.6 で行いました。
Laravel5.4でServiceを使ったプロジェクト構成
MariaDB の設定は、次と同じです。
Laravel で MariaDB の CRUD (その 1)
- プロジェクトの作成
laravel new project_1
- 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); // 追加
}
// 略
- .env の設定 (MariaDB の接続情報)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=article
DB_USERNAME=scott
DB_PASSWORD=tiger123
- モデルを入れるフォルダーの作成
mkdir app/Models
- モデルとマイグレーションを作成
php artisan make:model Models/Hoge -m
database/migrations/2018_06_25_101244_create_hoges_table.php が出来る
- 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();
// 略
- migrateしてテーブルを作成
php artisan migrate
次のテーブルができます。
MariaDB [city]> show tables;
+-----------------+
| Tables_in_city |
+-----------------+
| hoges |
| migrations |
| password_resets |
| users |
+-----------------+
- 出来たテーブルにデータを入れます。
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)
- app/Models/Hoge.php の編集
app/Models/Hoge.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Hoge extends Model
{
protected $fillable = [ // 追加
'hoge' // 追加
]; // 追加
}
- サービスを入れるフォルダーの作成
mkdir app/Services
- app/Services/HogeService.php を作成
app/Services/HogeService.php
<?php
namespace App\Services;
use App\Models\Hoge;
class HogeService{
public function getHoge(){
return Hoge::all();
}
}
- app/Providers/AppServiceProvider.phpのregisterに追加
app/Providers/AppServiceProvider.php
// 略
public function register()
{
$this->app->bind('App\Services\HogeService');
}
// 略
- ルートの作成
routes/web.phpに以下を追加
routes/web.php
// 略
Route::resource('hoge', 'HogeController');
- コントローラーの作成
php artisan make:controller HogeController
- 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){}
}
- ビューを入れるフォルダーの作成
mkdir resources/views/hoge
- 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>
- サーバーの起動
php artisan serve
- ブラウザーで http://localhost:8000/hoge にアクセス