2014-04-01から1ヶ月間の記事一覧
get()やall()の結果が0件というか空であることはisEmpty()で確認できる。 $tmps = Title::all(); if($tmps->isEmpty()){ return Redirect::back(); }
Eloquent上で関連付けし、さらにWhere句を使う時は、useを使って$where句を渡す。以下の例はTitleモデルとNameモデルを関連付けして、さらにWhere句で絞込をしている。 $where = "country='Japan'"; $lists = Title::whereHas('name', function($q) use ($wh…
連想配列を作るのに便利なlists()メソッド。実際に使うときは連想配列に空白も欲しい。そういうときは普通に配列を足せばOK。 $houses = ['0' => ''] + House::all()->lists('town', 'id') ;
XserverだとLaravelのartisanコマンドが効かない。原因はおそらくphpのバージョンだ。例えphpのバージョンを5.3以降に切り替えても「/usr/bin/env php」はphp5.1のままだ。と思ったらこんな記事が!もっと早く知りたかった。 Xserver(レンタルサーバー)でLar…
MessageBagを使ってメッセージ表示する。addメソッドの第一引数はキーらしいけど、ここでは空白にした。 $messages = new Illuminate\Support\MessageBag; $messages->add('', 'この操作はできません。'); return Redirect::back()->withErrors($messages);V…
MySQL限定だけど、テーブルの要素を取得する方法。「Field」はMySQL独特の表現だ。 $title = new Title; $query = 'SHOW COLUMNS FROM ' . $title->getTable(); foreach (DB::select($query) as $column) { $columns[] = $column->Field; } これで$columnsの…
Eloquentを使えばテーブル名を取得できる。 $title = new Title; $title->getTable();
Laravelで'タグ'=>'タグ'のような配列が欲しいときがあるかもしれない。以下の様な場合だ。 <select name="tag"> <option value="タグ">タグ</option> <select>Viewはこうすれば良い。 {{ Form::select('tag', $tags, null) }}Controllerではlists()を使う。 $tags = Tag::lists('name','name');</select></select>
XMLファイルを使ってスクリプトファイルをWindows上で実行する方法。 <package> <job> <script type="text/javascript"> <![CDATA[ WScript.Echo("Hello world!"); ]]> </script> </job> </package>
○artisanのmigrate createコマンドで生成したファイルは、別環境に持っていっても動かない。例えばphp artisan migrate:resetの際に、以下の様なエラーメッセージが出る。 >php artisan migrate:reset {"error":{"type":"Symfony\\Component\\Debug\\Excepti…
デフォルトのUserモデルを使っている人が、Laravelのバージョンをあげるとdb:seedに失敗する。以下のようなメッセージが出る。 C:\xampp\futari>php artisan db:seed {"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","me ssa…
共通関数的なものはBaseControllerに作ればよいのか。今まで気が付かずにファサード使ってたよ。おかげでファサードが勉強できた。
Controllerのshowのidに数字が来たら普通にfind、文字列が来たらwhereにする。 public function show($id) { if (is_numeric($id)) { $tag = Tag::find($id); } else { $tag = Tag::where('name', '=', $id)->first(); } }
listsメソッドの引数の文字列には「.」が使えない。そのためjoinとlistsを併用したい時はASで名前を変える。 というかEloquentでもjoinができたのか。 $lists = Member::select('members.name AS name', 'childs.id AS id') ->join('childs', 'childs.member…
Form::selectはlistsメソッドを使えば一行で書ける。コントローラ側 $lists = Movie::lists('title', 'id');ビュー側 {{ Form::select('director_id', $lists, null, ['data-rel'=>'chosen']) }}もしくはコンフィグファイルを使ってもよい。コンフィグファイ…
@includeを使えば簡単に結合できる。 <div class="form-controll"> @include('title.form') @include('title.button) </div>この場合、titleフォルダのform.blade.phpとbutton.blade.phpが読み込まれる。
MySQLの日付型に空情報を入れると自動的に「0000-00-00」に変換されてしまう。これを避けるにはnullを入れる。 $inputs = Input::all(); if(!$inputs['birthday']){ $inputs['birthday'] = null; }テーブルを作るときには日付型はnull入力を可能にしておく。…
「Input::except('password')」を使えばInput::all()からpasswordの情報を削除することができる。 $input = Input::except('password')例えばInput::all()だと余計な情報がついてしまう場合に、Input::except()で除外することもできる。事前にInput::get()を…
クエリーの結果を連想配列にしてくれるlistsメソッド。今まで知らなかったことを後悔するレベルで便利だった。例えばidをキー、nameを値にした連想配列が欲しいときは以下のようにする。 $names = Member::all()->lists('name','id');
新規作成のとき {{ Form::open(['route' => 'artist.store','class'=> 'form-horizontal']) }}更新のとき {{ Form::model($artist, ['method' => 'put', 'route' => ['artist.update', $artist->id],'class'=> 'form-horizontal']) }}
○サービスプロパイダーを登録するとエラーになる コマンドでサービスプロパイダーを作って php artisan workbench futari/rei --resourcesapp/config.phpにサービスプロパイダーを追記すると 'providers' => array( 'Illuminate\Foundation\Providers\Artisa…
function($q)またはfunction($query)でfunction内に変数を渡すにはuseを使う。 $where='yen>100'; $lists = Yasai::whereHas('nedan', function($q) use($where) { $q->where($where); })->get();
App::errorでModelNotFoundExceptionがキャッチできなかった。App::errorでエラーをキャッチするときってフルパスで書かないとダメなのか。フルパスで書く例はこちら。 App::error(function(\Illuminate\Database\Eloquent\ModelNotFoundException $e) { ret…