WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
リストに項目を追加するには

リストに項目を追加するには

このエントリーをはてなブックマークに追加

データベーステーブルからリストを取得するには、listsメソッドを使用します。

lists(値,キーカラム)

listsメソッドは、第1引数にリストの値、オプションで第2引数にリストのキーカラムを指定します。

(例)

$user=User::where(‘role_id’,’>=’,70)->lists(‘name’,’id’);
return View::make(‘tanto/create’,compact(‘user’));

  • 上記の例では、role_idが70以上のユーザーを$userリストとして、ビューに引き渡しています。
  • そして下記のビューでユーザー名からユーザーIDを取得することができます。

{{Form::open()}}
{{Form::select(‘user_id’,$user)}}
{{Form::submit()}}

  • ただ、上記の場合は、データベーステーブルからのユーザーIDしか取得することができません。
  • しかし、たまに、データベーステーブル以外の値も追加したいときが発生します。
  • そんなときは、下記のarray_addヘルパー関数を使います。

array_add($配列,キー,値);

array_add関数は、第1引数に、元になる配列を指定します。この配列に、第2引数と第3引数で指定したキーと値を追加します。

それでは、実践してみましょう。

$user=User::where(‘role_id’,’>=’,70)->lists(‘name’,’id’);
$user=array_add($user,”,’無し’);
return View::make(‘tanto/create’,compact(‘user’);

  • 上記の場合は、$userリストに、usersテーブル以外の値を追加することができます。
  • 今回の例では、キーが空白で、値(リストの表示名)が無しのリストを追加することができました。

上記の例では、ビューファイルでのリストの表示は、「無し」が表示されますが、送信されるデータ(Input::get(‘user_id))は空白です。

NULL値を代入したい場合

普通にInput::getで受信した値をデータベースに書き戻した場合、上記のように空白を指定した場合、データベーステーブルには空白値や0が代入されます。

(例)

$tanto=Tanto::find($id);
$tanto->user_id=Input::get(‘user_id’);
$tanto->save();

そこで、下記のように三項演算子を使用すれば、データベーステーブルにNULL値を代入することができます。

$tanto=Tanto::find($id);
$tanto->user_id=Input::get(‘user_id’) ? : null;
$tanto->save();

この三項演算子を使用しなければ、下記のように書かなくてはいけなくなります。

$tanto=Tanto::find($id);
if(Input::has(‘user_id’)):
$tanto->user_id=Input::get(‘user_id’);
else:
$tanto->user_id=null;
endif;
$tanto->save();

三項演算子は使い慣れるとかなり便利ですので、皆さんも多用してください。

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です