4.2から移行するの辛そうなので無視したかったけどそろそろ試してみる。
とりあえずDBからデータ読んで画面表示まででゴールとする。
install
とりあえずla5testという名前にする。
composer create-project laravel/laravel la5test --prefer-dist
動作確認
laravel5を動かすのに必要なモジュールが入ってれば以下のような画面が見える
あと自分はlaravel4の開発環境が入っているので上記コマンドだけで問題無く動きました。
動かすまでの設定
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を修正
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
上記にアクセスしてみる
まだ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
ブラウザでアクセスする。
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環境に反映されてしまった。
長くなったのでここまで。