LoginSignup
5
5

More than 5 years have passed since last update.

laravel5を試してみる(メモ)

Last updated at Posted at 2015-04-20

4.2から移行するの辛そうなので無視したかったけどそろそろ試してみる。
とりあえずDBからデータ読んで画面表示まででゴールとする。

install

とりあえずla5testという名前にする。

composer create-project laravel/laravel la5test --prefer-dist

動作確認

laravel5を動かすのに必要なモジュールが入ってれば以下のような画面が見える

あと自分はlaravel4の開発環境が入っているので上記コマンドだけで問題無く動きました。

スクリーンショット 2015-04-16 14.05.03.png

動かすまでの設定

DB作成

今回は「la5test」というDBにする
ちなみにデフォルトのDBはmysqlになってます。

config/database.php

mysqlに接続して

create database la5test default character set utf8;

.envの修正

DB_HOST=localhost
DB_DATABASE=la5test
DB_USERNAME=hoge
DB_PASSWORD=hogehoge

modelを作成

taskというmodelとtableを作成する。

php artisan make:model Task

上記を実行すると「app/」直下に「Task.php」が生成されます。
また「database/migrations/2015_04_16_031841_create_tasks_table.php」こんな感じで
migrateファイルも作成されます。

「app/」直下が嫌ならディレクトリ指定も可能です。

php artisan make:model models/Task

中身を書き換えてテーブルを作成

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTasksTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('tasks', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('body');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('tasks');
    }

}
migrate実行
php artisan migrate
DBを確認
mysql> show tables;
+-------------------+
| Tables_in_la5test |
+-------------------+
| migrations        |
| password_resets   |
| tasks             |
| users             |
+-------------------+

認証用のmigrationファイルがデフォルトで存在してたのでusersとかできてました。

とりあえず「tasks」ができてたのでOK

controller作成

php artisan make:controller TaskController

view作成

resources/views

上記、配下に「tasks」を作成。

resources/views/home.blade.php

をコピーして

resources/views/tasks/index.blade.php

を作成した

routingの設定

app/Http/routes.phpを修正

app/Http/routes.php
Route::resource('task', 'TaskController');

上記を追加。

確認する

$ php artisan route:list

+--------+--------------------------------+-------------------------------------------------------+--------------+------------------------------------------------------------+------------+
| Domain | Method                         | URI                                                   | Name         | Action                                                     | Middleware |
+--------+--------------------------------+-------------------------------------------------------+--------------+------------------------------------------------------------+------------+
|        | GET|HEAD                       | /                                                     |              | App\Http\Controllers\WelcomeController@index               | guest      |
|        | GET|HEAD                       | home                                                  |              | App\Http\Controllers\HomeController@index                  | auth       |
|        | GET|HEAD                       | task                                                  | task.index   | App\Http\Controllers\TaskController@index                  |            |
|        | GET|HEAD                       | task/create                                           | task.create  | App\Http\Controllers\TaskController@create                 |            |
|        | POST                           | task                                                  | task.store   | App\Http\Controllers\TaskController@store                  |            |
|        | GET|HEAD                       | task/{task}                                           | task.show    | App\Http\Controllers\TaskController@show                   |            |
|        | GET|HEAD                       | task/{task}/edit                                      | task.edit    | App\Http\Controllers\TaskController@edit                   |            |
|        | PUT                            | task/{task}                                           | task.update  | App\Http\Controllers\TaskController@update                 |            |
|        | PATCH                          | task/{task}                                           |              | App\Http\Controllers\TaskController@update                 |            |
|        | DELETE                         | task/{task}                                           | task.destroy | App\Http\Controllers\TaskController@destroy                |            |
|        | GET|HEAD                       | auth/register/{one?}/{two?}/{three?}/{four?}/{five?}  |              | App\Http\Controllers\Auth\AuthController@getRegister       | guest      |
|        | POST                           | auth/register/{one?}/{two?}/{three?}/{four?}/{five?}  |              | App\Http\Controllers\Auth\AuthController@postRegister      | guest      |
|        | GET|HEAD                       | auth/login/{one?}/{two?}/{three?}/{four?}/{five?}     |              | App\Http\Controllers\Auth\AuthController@getLogin          | guest      |
|        | POST                           | auth/login/{one?}/{two?}/{three?}/{four?}/{five?}     |              | App\Http\Controllers\Auth\AuthController@postLogin         | guest      |
|        | GET|HEAD                       | auth/logout/{one?}/{two?}/{three?}/{four?}/{five?}    |              | App\Http\Controllers\Auth\AuthController@getLogout         |            |
|        | GET|HEAD|POST|PUT|PATCH|DELETE | auth/{_missing}                                       |              | App\Http\Controllers\Auth\AuthController@missingMethod     | guest      |
|        | GET|HEAD                       | password/email/{one?}/{two?}/{three?}/{four?}/{five?} |              | App\Http\Controllers\Auth\PasswordController@getEmail      | guest      |
|        | POST                           | password/email/{one?}/{two?}/{three?}/{four?}/{five?} |              | App\Http\Controllers\Auth\PasswordController@postEmail     | guest      |
|        | GET|HEAD                       | password/reset/{one?}/{two?}/{three?}/{four?}/{five?} |              | App\Http\Controllers\Auth\PasswordController@getReset      | guest      |
|        | POST                           | password/reset/{one?}/{two?}/{three?}/{four?}/{five?} |              | App\Http\Controllers\Auth\PasswordController@postReset     | guest      |
|        | GET|HEAD|POST|PUT|PATCH|DELETE | password/{_missing}                                   |              | App\Http\Controllers\Auth\PasswordController@missingMethod | guest      |
+--------+--------------------------------+-------------------------------------------------------+--------------+------------------------------------------------------------+------------+

taskが登録されていることが確認できた。

アクセス

http://localhost/task

上記にアクセスしてみる

スクリーンショット 2015-04-16 14.08.38.png

まだmodelを使ってないけど画面の表示ができた。

modelを使う。

先ほど作成したmodelからデータを取得して表示する用に修正する。

対話式(tinker)でデータを登録

formを作成するのが面倒なので対話式でデータを登録します

php artisan tinker

上記コマンドでlaravelと対話式でコマンド入力が可能です。

>>> $task = App::make('\App\Task');
=> <App\Task #000000003956511c000000011e1b911e> {}
>>> $task->title = 'test title';
=> "test title"
>>> $task->body = '本文です';
=> "本文です"
>>> $task->save();
=> true
>>> $task->all();
=> <Illuminate\Database\Eloquent\Collection #0000000039565101000000011e1b911e> [
       <App\Task #00000000395651f1000000011e1b911e> {
           id: 1,
           title: "test title",
           body: "本文です",
           created_at: "2015-04-16 06:30:57",
           updated_at: "2015-04-16 06:30:57"
       }
   ]
>>>

これでとりあえずtasksテーブルに1件のデータが登録されました。

同じように操作して2件くらい登録します。

controllerの修正

<?php namespace App\Http\Controllers;

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

use Illuminate\Http\Request;

class TaskController extends Controller {

    protected $tasks;

    public function __construct(Task $tasks)
    {
        $this->tasks = $tasks;
    }

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        $tasks = $this->tasks->all();
        return view('tasks.index', ['tasks' => $tasks]);
    }

useを追加とTaskモデルからデータを参照してviewに渡すように変更してます。

use App\Task;

これ↑

あとviewも受け取ったデータを表示するように修正する

@extends('app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-10 col-md-offset-1">
            <div class="panel panel-default">
                <div class="panel-heading">Task List</div>

                <div class="panel-body">
                    <ul class="list-group">
                        @foreach ($tasks as $task)
                            <li class="list-group-item">{{$task->title}}</li>
                        @endforeach
                    </ul>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

ブラウザでアクセスする。

スクリーンショット 2015-04-16 16.27.08.png

DBからデータ取得して表示された!

参考サイト

http://readouble.com/laravel/5/0/0/ja/
http://blog.asial.co.jp/1360
http://qiita.com/fluke8259/items/13efc59526f193a28012

気づいたこと

2015/04/16時点ではartisanコマンドの「--env」が効かないっぽい。

php artisan migrate --env=testing

php artisan key:generate --env=testing

とりあえず上記2つはlocal環境に反映されてしまった。

長くなったのでここまで。

5
5
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
5
5