LoginSignup
29
36

More than 5 years have passed since last update.

Laravel基礎・簡単なDB連携・フォーム

Last updated at Posted at 2016-07-05

前提知識

  • SSH
    • 暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。
  • URI
    • URL⊂URI。URLとの違いはあんまり気にしなくていいかも。
  • MVC  MVCを理解する
    • Model: ビジネスロジックを記述する。
    • View: Modelを表示する。
    • Controller: Viewの入力を受け取って判断し、Modelを起動する。

Laravel入門

参考: ビギナーのためのLaravel入門

Routing

「どのアドレスにアクセスしたら、どの処理を実行するか」を記述する。routes.phpに記述する。
あくまでルート情報を管理するためのもの。

  • 場所: /app/Http/routes.php
  • Route::get( アドレス , 関数 )
    • GETアクセスされた際のルーティングを設定する。
    • 第一引数のアドレスにアクセスすると、第二引数の関数が実行される。

View

Laravelでは、画面の表示用のテンプレートをあらかじめ用意しておき、それを利用して画面表示を行うことができる。そのテンプレートの置き場所。

  • 場所: /resources/views
  • view( テンプレート , 連想配列 )
    • テンプレートを表示する。変数に代入することもできる。
routes.php内に記述
Route::get('/helo', function () {
    return view('helo',['message' => 'Hello!']);
});
views/helo.php
<!doctype html>
<html>
<head>
    <title>Sample</title>
    <style>
    body { color:gray; }
    h1 { font-size:18pt; font-weight:bold; }
    </style>
</head>
<body>
    <h1>Sample</h1>
    <p><?php echo $message; ?></p>
</body>

Controller

画面に表示する詳細などをすべてRoutingに記述するとごちゃごちゃする。
そこで、Controllerでテンプレートの処理などを行う。

  • 場所: app/Http/Controllers
  • Route::controller( アドレス , コントローラー名 );
    • 指定されたアドレス下にアクセスされると、自動的にそのコントローラーに処理が渡される。
routes.php内に記述
// ~.com/heloにアクセスされると、HeloControllerの関数inputに処理が渡される
Route::get('helo', 'HeloController@input');
heloController.php
<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class HeloController extends Controller
{
    public function input()
    {
        // views/helo.phpを表示する
    return view('helo', ['message' => 'Hello!']);
    }
}

Blade

apple.php
@section('header')@stop
orange.php
@yield('header')

apple.phpで記述した中身をorange.phpに出力できる

DBの操作

参考

app直下でDBや関数の定義をする

(テーブル名).php
namespace App;

use Illuminate\Database\Eloquent\Model;

class (テーブル名) extends Model{
  //laravelでは必要
  const CREATED_AT = null;
  const UPDATED_AT = null;

  //primaryKeyがidの場合は指定しなくても良い
  protected $primaryKey = '(プライマリキー名)'
  protected $table = '(テーブル名)'
  //option
  protected $fillabel = ["(カラム名1)","(カラム名2)",...,"(カラム名X)"]
}

//関数(テーブル操作系)
public function ...

Controllerで関数を呼び出す

Controllers/hogeController.php
<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\(テーブル名_頭大文字);

//DB保存
$テーブル名 = new テーブル名;
$テーブル名->カラム名 = 変数;
.
.
.
$テーブル名->save();

DBを検索して値を取得

(参考)

HogeClassテーブル

column1 column2 column3
... ... ...
欲しい値 検索ワード ほげ
... ... ...
$serchVal = "検索ワード";
$resultVal = Hogeclass::select('column1', 'column2')
      ->where('column2', '=', $searchVal)
      ->value("column1");

$resultValに”欲しい値”が格納されている。

DBのレコードを並び替えてビューで表示する

例として、社員(shain)テーブルのレコードを主キー(id)降順で並び替える。
以下の関数をコントローラクラス内に追加。

hogeController.php
public function hoge1(){
    $shains = Shains::orderBy('id', 'DESC')->get();
    return view('hogeView', ['shains' => $shains]);
  }

ビューでの呼び出し方。

hogeView.blade.php
foreach ($shains as $shain) {
    echo $shain->name;
}

laravelでフォームを作る

Routing(受け取り先の指定)

routes.php
Route::get('/', 'indexController@input');
Route::post('res', 'indexController@res');

indexController.phpのres関数にpostする。

Controller(フォームから受け取る)

indexController.php res関数
class indexController extends Controller{
  public function res(Request $request){
    //フォームから受け取る
    $フォームのname = $request->input('フォームのname');
      .
      .
      .
    //DB保存
  }
}

Requestクラスを使うのがlaravel5流らしい。

その他

  • PJ/storage/logsにエラーログが出ている。
29
36
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
29
36