ふたりはララベル (Laravel PHP Framework)

PHPフレームワークのLaravelの体験記を書いていきます。こんなタイトルのブログですが萌え系アニメは一秒たりとも観たことがありません。

Laravel

サービスプロパイダーを登録するとエラーになる

○サービスプロパイダーを登録するとエラーになる コマンドでサービスプロパイダーを作って php artisan workbench futari/rei --resourcesapp/config.phpにサービスプロパイダーを追記すると 'providers' => array( 'Illuminate\Foundation\Providers\Artisa…

function($q)に変数を渡す

function($q)またはfunction($query)でfunction内に変数を渡すにはuseを使う。 $where='yen>100'; $lists = Yasai::whereHas('nedan', function($q) use($where) { $q->where($where); })->get();

ModelNotFoundExceptionがキャッチできない

App::errorでModelNotFoundExceptionがキャッチできなかった。App::errorでエラーをキャッチするときってフルパスで書かないとダメなのか。フルパスで書く例はこちら。 App::error(function(\Illuminate\Database\Eloquent\ModelNotFoundException $e) { ret…

Form::modelでDeleteを設定する

Form::modelからControllerのdestoryを呼び出したい。 例えばYasaiControllerのdestoryを呼び出す場合のViewは以下のようにする。2行目の「'method' => 'delete'」を忘れてドツボにハマった。 {{ Form::model($yasai,[ 'method' => 'delete', 'route' => ['y…

Eloquentで関連付けられたテーブルの情報を取得する

野菜テーブルと値段テーブルが別れていたとして、このテーブルをEloquentで結合したい。yasai idname 1トマト 2きゅうり 3大根 nedan idyen 1150 260 3200 以下の3ステップで結合ができる。 1:Eloquentで関連付ける class Yasai extends Eloquent { public $…

LaravelをXserverにインストールする

LaravelをXserverにインストールしてみた。 1. LaravelインストーラPHARアーカイブをダウンロードする ファイルはhttp://laravel.com/laravel.pharにある。 2. LaravelインストーラPHARアーカイブを適当な場所に置く httpアクセスさせないために「public_htm…

migrateのテーブル作成に失敗する

migrateでテーブル作成しようとすると、こんなエラーが出る時がある。 C:\xampp\futari>php artisan migrate [Illuminate\Database\QueryException] SQLSTATE[42S02]: Base table or view not found: 1146 Tableこれはmigrateでmakeするときのオプションに、…

Laravelのインストーラを使ってWindowsにインストール

ただでさえ簡単だったLaravelのインストールだけど、LaravelインストーラPHARアーカイブを使えばさらに簡単で早くなる。 1. LaravelインストーラPHARアーカイブをダウンロードする ファイルはhttp://laravel.com/laravel.pharにある。 2. Laravelインストー…

EloquentでWhereを重ねる

EloquentのwhereRawメソッドを使う他に、whereメソッドを重ねることもできる。こちらのほうが安全。 Title::where('type', '=', $type)->where('id', '>', '100')->get();

LaravelのEloquentはデータの変更が無いとupdated_atを更新しない

LaravelのEloquentはデータの変更が無いとupdated_atを更新しない。便利な仕様だけど、どうしても更新してほしければupdated_atにゴミデータを入れよう。 $title->updated_at = null; $title->save(); ツイッター上の指摘で気がついたけど $title->touch();…

Laravelを他の環境に持って行ったら画面が真っ白

Laravelを他の環境に持って行ったら画面が真っ白になった。以下の二つのコマンドを実施したら治った。 php artisan dump-autoload chmod 777 app/storage/*

Form::modelを使った場合は初期値をnullにする

Form::modelを使う場合は、既に入っている値を自動的に取得してくれるので便利。注意するのは初期値を指定するときはnullにすること。 {{ Form::model($title,[ 'method' => 'put', 'route' => ['title.update',$title->id], 'class' => 'form-horizontal' ]…

Laravelとdatepicker

jQuery-UIのdatepickerはMySQLフォーマットにしよう。 MySQLのDate型は「yy-mm-dd」なので、jQuery-UIのdatepickerはデフォルトのままだと使えない。 以下のように設定を変える必要がある。 $(function() { $(".datepicker").datepicker("option", "dateForm…

LaravelでNO_ZERO_DATEは効かない

MySQLに「NO_ZERO_DATE」を指定すると、Laravelが動かなくなった。どうやらtimestamps()が違反するらしい。 SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'created_at'

Form::selectの書き方

Formでselect書くときはこうするのか。 {{ Form::select('bunrui', ['PHP', 'Perl', 'Ruby'], 'PHP',['data-rel'=>'chosen']) }}以下のように出力される。 <select data-rel="chosen" name="bunrui"> <option>PHP</option> <option>PHP</option> <option>Perl</option> <option>Ruby</option> </select>

FormをModelと一致させる

Blade側でFormをModelと一致させる。 {{ Form::model($title,[]) }}そうするとController側でこういう書き方ができて楽。 $title = Title::find($id); $inputs = Input::all(); $title->update($inputs);

HTML::styleでID指定する

HTML::styleでIDを指定したい場合は例によって引数で渡す。 {{ HTML::style('ashley/css/colors.css',['id'=>'colors']) }}<link id="colors" media="all" type="text/css" rel="stylesheet" href="http://localhost/ashley/css/colors.css"></link>

Laravel 4.1

Laravel 4.1がついに出た!と思ったらすでに4.1.1になっていた。

自作コマンドのオプション

自作コマンドを作った場合、optionメソッドの戻り値はオプションの有無の真偽値なので、「$this->option('auto')」の結果はTrueかFalseだ。以下みたいに書ける。 public function fire() { if ($this->option('auto')) { echo 'Hello'; } } protected functi…

whereメソッドで結果を一件だけ取得したいとき

find()のように結果を一件だけ取得したいときはfirst()を使う。 $title = Title::where('name','=',$name)->first();

Laravelで定数値を設定する

他にも方法ありそうだけど、とりあえず…。 「app\start」フォルダ内に「constants.php」を作って、中に定数値を記述する。

artisan workbenchでJSONのエラーが出たら

こんなエラーが出た。 C:\xampp\arana>php artisan workbench futari/rei --resources Package workbench created! [Composer\Json\JsonValidationException] "./composer.json" does not match the expected JSON schema: - authors[0] : the property name…

Form::openでメソッドとは違うURLを使いたいとき

Form::openでメソッドとは違うURLの要素を使いたいときは以下のようにする。 {{ Form::open(['action' => 'VoteController@reset','url'=>'delete']) }}出力はこうなる。 <form method="POST" action="http://localhost/delete" accept-charset="UTF-8"></form>

いきなりファサードにチャレンジする

Laravelのドキュメントには「ファサードを始める前にIoCコンテナを習得しとけよ!」って強めに書いてある。しかし「Auth」って書くだけでメソッドを呼び出すことができるファサード、すぐ使いたかったのでいきなりやってみた。未だにIoCコンテナはわからない…

自作のパッケージ内でEloquentを使う

自作のパッケージ内、または名前空間内でEloquentを使う場合は名前空間を指定する。単に「\」をつけるだけ。 $titles = \Title::get();

よくあるエラー「getResults() on a non-object」

Call to a member function getResults() on a non-object主にボケミスしたときに出てくるメッセージ。例えば「$user->save()」のつもりが「$user->save」とやってしまったときに、このメッセージが出てくる。

Laravel初心者じゃなくてフレームワーク初心者

Laravelを使っている人のほとんどが他のフレームワーク使いから転向してきた人で、初めてのフレームワークがLaravelです!完全な初心者です!Wordpressと何が違うんですか?という人は私くらいなものだろう。Laravelに関する情報を検索すると、みんな難しい…

Laravelではページのタイトルをどうつければいいか?

例えば「無題のドキュメント」というタイトルをつけたいとして…。 方法1:Blade上にタイトルを書く 以下のようにBladeを設定する。 @extends('layout.default') @section('title') 無題のドキュメント @stop @section('content') <p>Hello World.</p> @stop layout…

ページネーションをシンプルに作り替える

この画像みたいなシンプルなページネーションがやりたい。 でも作り方がわからなかったので直接 「vendor\laravel\framework\src\Illuminate\Pagination\BootstrapPresenter.php」を編集するという荒業を使った。まずはview.phpを編集した後にslider.phpを自…

LaravelのEloquentで特定のカラムだけを取得したい

SQL文で言うところの select `name`,`address` from title; をLaravelのEloquentで実現したい場合は、getメソッドを使う。引数が配列になることに注意。Eloquentの結果をただの配列にするtoArrayも併用すると便利。 $titles = Title::get(['name','address']…