DB database/migrations/create_articles_table.php public function up() { Schema::create('articles', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('user_name'); $table->string('content'); $table->timestamps(); }); } Model app/Article.php amespace App; use Illuminate\Database\Eloquent\Model; class Article extends Model{} View routes/web.php Route::get('/', function () { return redirect('/articles'); }); Route::get('/articles', 'ArticleController@index')->name('article.list'); Route::get('/article/new', 'ArticleController@create')->name('article.new'); Route::post('/article', 'ArticleController@store')->name('article.store'); Route::get('/article/edit/{id}', 'ArticleController@edit')->name('article.edit'); Route::post('/article/update/{id}', 'ArticleController@update')->name('article.update'); Route::get('/article/{id}', 'ArticleController@show')->name('article.show'); Route::delete('/article/{id}', 'ArticleController@destroy')->name('article.delete'); resouces/views/layout.blade.php !DOCTYPE html> html> head> meta charset='utf-8' /> meta name='viewport' content='width=device-width, initial-scale=1, shrink-to-fit=no' /> link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css' /> title>paiza bbs/title> style>body {padding: 10px;}/style> /head> body> @include('nav') div class='container'> @yield('content') /div> /body> /html> resouces/views/index.blade.php @extends('layout') @section('content') h1>laravel BBS/h1> p>{{ $message }}/p> p>a href="{{ route('article.new') }}" class='btn btn-outline-primary'>新規投稿/a>/p> @include('search') table class='table table-striped table-hover'> @foreach ($articles as $article) tr> td>a href='{{ route("article.show", ["id" => $article->id]) }}'> {{ $article->content }} /a>/td> @endforeach /table> @endsection resouces/views/new.blade.php @extends('layout') @section('content') h1>laravel bbs/h1> p>{{ $message }}/p> {{ Form::open(['route' => 'article.store']) }} div class='form-group'> {{ Form::label('content', 'Content:') }} {{ Form::text('content', null) }} /div> div class='form-group'> {{ Form::label('user_name', 'Name:') }} {{ Form::text('user_name', null) }} /div> div class="form-group"> {{ Form::submit('作成する', ['class' => 'btn btn-primary']) }} a href={{ route('article.list') }}>一覧に戻る/a> /div> {{ Form::close() }} @endsection resouces/views/search.blade.php {{ Form::open(['method' => 'get']) }} {{ csrf_field() }} div class='form-group'> {{ Form::label('keyword', 'キーワード:') }} {{ Form::text('keyword', null, ['class' => 'form-control']) }} /div> div class='form-group'> {{ Form::submit('検索', ['class' => 'btn btn-outline-primary'])}} a href={{ route('article.list') }}>クリア/a> /div> {{ Form::close() }} resouces/views/show.blade.php @extends('layout') @section('content') h1>laravel bbs/h1> p>{{ $article->content }}/p> p>{{ $article->user_name }}/p> p> a href={{ route('article.list') }} class='btn btn-outline-primary'>一覧に戻る/a> a href={{ route('article.edit', ["id" => $article->id]) }} class='btn btn-outline-primary'>編集/a> /p> div> {{ Form::open(['method' => 'delete', 'route' => ['article.delete', $article->id]]) }} {{ Form::submit('削除', ['class' => 'btn btn-outline-secondary']) }} {{ Form::close() }} /div> @endsection resouces/views/edit.blade.php @extends('layout') @section('content') h1>laravel bbs/h1> p>{{ $message }}/p> {{ Form::model($article, ['route' => ['article.update', $article->id]]) }} div class='form-group'> {{ Form::label('content', 'Content:') }} {{ Form::text('content', null) }} /div> div class='form-group'> {{ Form::label('user_name', 'Name:') }} {{ Form::text('user_name', null) }} /div> div class="form-group"> {{ Form::submit('保存する', ['class' => 'btn btn-primary']) }} a href={{ route('article.show', ['id' => $article->id]) }}>戻る/a> /div> {{ Form::close() }} @endsection resouces/views/nav.blade.php nav class='navbar navbar-expand-md navbar-dark bg-dark fixed-top'> a class='navbar-brand' href={{ route('article.list') }}>laravel BBS/a> /nav> Controller app/Http/Controllers/ArticleController.php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Article; class ArticleController extends Controller { public function index(Request $request) { if ($request->filled('keyword')) { $keyword = $request->input('keyword'); $message = 'Welcome my BBS: ' . $keyword; $articles = Article::where('content', 'like', '%' . $keyword . '%')->get(); } else { $message = 'Welcome my BBS'; $articles = Article::all(); } return view('index', ['message' => $message, 'articles' => $articles]); } public function create(Request $request) { $message = 'New article'; return view('new', ['message' => $message]); } public function store(Request $request) { $article = new Article; $article->content = $request->content; $article->user_name = $request->user_name; $article->save(); return redirect()->route('article.list', ['id' => $article->id]); } public function show(Request $request, $id, Article $article) { $message = 'This is your article ' . $id; $article = Article::find($id); return view('show', ['message' => $message, 'article' => $article]); } public function edit(Request $request, $id, Article $article) { $message = 'Edit your article ' . $id; $article = Article::find($id); return view('edit', ['message' => $message, 'article' => $article]); } public function update(Request $request, $id, Article $article) { $article = Article::find($id); $article->content = $request->content; $article->user_name = $request->user_name; $article->save(); return redirect()->route('article.list', ['id' => $article->id]); } public function destroy(Request $request, $id, Article $article) { $article = Article::find($id); $article->delete(); return redirect('/articles'); } }