7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravel5でDB操作の基本

Last updated at Posted at 2015-04-09

フォームから値を受けっとってDBの保存、表示までの簡単なサンプル。
Laravelでデータを扱う方法はQueryBuilder(DB::*)を使う方法と、Eloquent ORMを使う方法があるが、とりあえず、QueryBuilderを使う。QueryBuilderはモデルの定義無く使えるので便利である。
なお、ここでは、すでにmembersテーブルが存在することを前提に進める。

いちおうマスターレイアウト。

####Formの用意

resources/views/master.blade.php
<!doctype>
<html>
<head>
	<meta charset="utf-8">
	<title>
		@yield('title')
	</title>
</head>
<body>
 @yield('body')
</body>
</html>

ポイントは、普通のフォームでもname='_token'でcsrf_token()を送るところ。

resources/views/input.blade.php
@extends('master')

@section('title')
input
@stop

@section('body')
<form action="res" method="post">
<input type="input" name="name">
<input type="input" name="email">
<input type="submit" value="SEND">
<input type="hidden" name="_token" value="{{csrf_token()}}">
</form>
@stop

####受取と保存

受取については、Laravel5からはFormRequestを使うのが良いのだろうけど、とりあえずInputで受け取る。Inputを利用するには、use Input;とする必要がある。
ここでは、/inputでFormを表示、/resで値を受け取ってDBに保存する。
DBを使うためには、use DB;とする。

app/Http/Controllers/HogeController.php
<?php namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Input;
use DB;

class HogeController extends Controller{

	//form表示
	public function input(){
		return view('input');
	}
	
	//受取と保存
	public function res(){

		$name = Input::get('name');
		$email = Input::get('email');

		DB::table('members')->insert([
				'name'=>$name,
				'email'=>$email
			]);

		return "Saved";
	}

	//一覧表示
	public function select(){
		
		$members = DB::table('members')->get();
		return view('select')->with('members',$members);
	}
}

####表示

@extends('master')

@section('title')
select
@stop

@section('body')

<h3>list</h3>
@foreach($members as $member)
	{{$member->name." ".$member->email}}<br>
@endforeach

@stop

ここでは、Controllerのselect()で一覧を取得しているが、

$members = DB::select(DB::raw('select * from members'));

などとして、DB::raw()により生クエリを実行することもできる(rawを利用しない書き方もある)。

####Route

一応Routeも。

app/Http/route.php
Route::get('input','HogeController@input');

Route::post('res','HogeController@res');

Route::get('select','HogeController@select');
7
10
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
7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?