WinRoadのLaravel4初心者講座

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

Winroad徒然草の管理人がお届けします
API

Input::has()メソッド

指定したキーの入力値が存在するかどうかを確認するには、Input::has()めそっどを使用します。

Input::has(キー)

Input::get()メソッドは、引数で指定したキーに対応する値が存在するかどうかを確認します。

基本例

if(Input::get('email')){
//emailの値が存在する場合
echo 'emailは存在します';
}else{
//emailの値が存在しない場合
echo 'emailは存在しません';
}

 

Input::all()メソッド

フォームから送信された全ての値を取得するには、Input::all()メソッドを使用します。

Input::all()

Input::all()メソッドは、フォームから送信された全てのキーと値の連想配列を取得します。

※デフォルトの設定では、フォーム上で何も指定しなくても、トークン値(_token)も取得します。

Input::get()メソッド

フォームから一つの値を取得するにはInput::get()メソッドを使用します。

Input::get(キー、デフォルト値)

Input::get()メソッドは、第1引数で指定したキーの値を取得します。第2引数はオプションで、第1引数に指定したキーの値が存在しない場合のデフォルト値(代替値)を指定することができます。

基本例

{{ Form::open() }}
{{ Form::text('email','nakada@gmail.com') }}
{{ Form::password('password') }}
{{ Form::submit() }}
{{ Form::close() }}

//上記フォームからデフォルトのままの値を送信すると、

$email=Input::get('email');
$password=Input::get('password');

//emailキーで'nakada@gmail.com'を、passwordキーで''(空白)の値を取得します。

尚、Input::only(‘email’)では、’email’=>’nakada@gmail.com’の連想配列を取得しますので、値の取り出し方が違いますので、注意してください。

基本例2

Route::get('test',function(){
return View::make('test');
});
Route::post('test',function(){
echo Input::get('email')."<br>";
echo var_dump(Input::all());
});

上記例では、ブラウザで下記のように表示されます。

nakada@gmail.com
array(3) { [“_token”]=> string(40) “TIjEWgr52SXeX3SpBZVrzu9rwESFyOXS2f9tavCl” [“email”]=> string(16) “nakada@gmail.com” [“password”]=> string(0) “” }

Builder::pluck()メソッド

Builderクラスのpluckメソッドは、レコードの1カラムを取得するのに使用します。

Builder::pluck(カラム名)

Builder::pluck()メソッドは、引数で指定したレコードの1カラムを取得します。

基本例

Route::get('sample', function(){
$role=Role::where('level','<',50)->pluck('name');
echo var_dump($role)."<br>";
$role=Role::where('level','<',50)->first()->name;
echo var_dump($role);
});

//表示
string(5) "Staff"
string(5) "Staff"

上記の例を見てみると、firstメソッドで取得した値からプロパティを指定するのと同じ表示になっています。使い方としては同じと考えてもいいのでしょうか。?

array_pull()ヘルパー関数

array_pull()関数は、Laravelのヘルパー関数で、配列から指定したキー/値ペアを取得し、同時に削除します。

array_pull(配列,削除するキー名)

array_pull()は、第1引数の配列から、第2引数で指定したキーのキーと値のペアを取得して、同時に元の配列から、削除します。

基本例

$array=array('name'=>'Nakada','age'=>55);
$name=array_pull($array,'name');
echo var_dump($array)."<br>";
echo var_dump($name);

//上記の表示
array(1) { ["age"]=> int(55) }
string(6) "Nakada"

Bulider::lists()メソッド

Bulderクラスのlists()メソッドは、カラム値のリスト配列を取得することができます。※前にも記述していますが、間違いやすいので、再度具体例を挙げてみました。

Builder::lists(‘カラム値’,’キー’);

lists()メソッドは、第1引数にカラム値を指定します。第2引数は、オプションで、キーを指定することができます。※注意する点は、第1引数が値、第2引数がキーだと言うことです。間違いやすいので、要注意。

基本例1

//クエリービルダー
$roles=DB::tables('roles')->lists('name');
//EloquentORMの場合
//$roles=Role::lists('name);
echo var_dump($roles);
//表示例
array(6) { [0]=> string(5) "Admin" [1]=> string(7) "Manager" [2]=> string(9) "Moderator" [3]=> string(5) "Staff" [4]=> string(4) "User" [5]=> string(6) "Banned" }

基本例2

//第2引数にキーを指定
$roles=Role::lists('level','name');
return var_dump($roles);
//表示例
array(6) { ["Admin"]=> string(3) "100" ["Manager"]=> string(2) "70" ["Moderator"]=> string(2) "50" ["Staff"]=> string(2) "30" ["User"]=> string(1) "1" ["Banned"]=> string(1) "0" }

基本例3(具体例)

//ルーター
Route::get('sample', function(){
 $data['roles']=Role::lists('id','name');
 return View::make('sample',$data);
});

//sampleビュー

<!-- フォームのリスト表示 -->
{{ Form::open() }}
{{ Form::label('ロール') }}
{{ Form::select('role',$roles) }}
{{ Form::submit() }}
{{ Form::close() }}

<!-- リスト表示 -->
@foreach($roles as $key=>$value)
<ul>
<li>{{ $key }} : {{ $value }}</li>
</ul>
@endforeach

laravel029

Input::only()メソッド

Input::only()メソッドは、限定されたリクエストのみを取得するメソッドです。

Input::only(‘key’,’key’,……);

Input::only()メソッドは、引数に指定したキーとその値の連想配列を取得します。

基本例

//フォームからのデータを取得
$inputs=Input::only(‘name’,’email’,’password’);
//新規ユーザーを作成
User::create($inputs);

Input::except(‘key’,’key’,….);

Input::except()メソッドは、Input::onlyメソッドの反対で、引数に指定したキー以外のキーとその値の連想配列を取得します。

HTML::linkAction()メソッド

HTMLクラスのlinkActionメソッドは、コントローラーアクションへのリンクを生成します。

HTML::linkAction(‘アクション’,’タイトル’,’パラメータ’,’属性’)

HTML::linkActionメソッドは、第1引数にアクション名、第2引数に表示タイトル、第3引数に連想配列でパラーメータを指定します。第4引数は属性を連想配列で指定します。

アクション名は、’コントローラ名@アクション名’というふうに記述します。

基本例

HTML::linkAction(‘AdminController@getUpdate’,’修正’,array(‘id’=>1));

上記は、下記のようなURLを生成します。

http://ドメイン名/admin/update?id=1;

 

Builder::whereNull()メソッド

Illuminate\Database\Query\Builder::whereNull()メソッドは、DBクラスやModelクラスのメソッドチェーンとして使用します。

Builder::whereNull(カラム,論理演算子,NOT演算子)

Builder::whereNullメソッドは、ISNULL演算子を使ったWHERE句を生成します。第1引数に対象のカラム名を指定します。第2引数、第3引数はオプションで、第2引数は、andまたは、orを指定します。デフォルトはandで、orを指定するとorWhereNull()メソッドと同じWHERE句を生成します。第3引数はNOT演算子を指定します。デフォルトはfalseです。NOT演算子を使う場合はtrueを指定します。

基本例

//Fuluentクエリービルダー
DB::table('users')
->whereNull('age')
->get();

//Eloquent ORM
User::whereNull('age')->get();
  •  ageカラムがNULL値のデータを抽出します。

ISNULL演算子/IS NULL演算子

NULLは特殊な値で、数値のように論理演算子や比較演算子を使って検索することが出来ません。つまり、下記のようなSQL文では、正しい結果を得ることが出来ません。

SELECT * FROM users WHERE email=NULL;

NULLを検索するには、ISNULL演算子、もしくは、IS NULL演算子を使います。ISNULL演算子、IS NULL演算子は引数に値がNULLなら1を、そうでなければ0を返します。SQL文は下記のように記述します。

  • WHWRE 対象値 IS NULL
  • WHERE ISNULL(対象値)

関連メソッド

  • orWhereNull(カラム)
  • whereNotNull(カラム,論理演算子)
  • orWhereNotNull(カラム)

Builder::whereIn()メソッド

Illuminate\Database\Query\Builder::whereIn()メソッドは、DBクラスやModelクラスのメソッドチェーンとして使用します。

Builder::whereIn(カラム,値,論理演算子,NOT演算子)

Builder::whereInメソッドは、IN演算子を使ったWHERE句を生成します。第1引数が対象のカラム名、第2引数に値の配列を指定します。第3引数と第4引数はオプションで、第3引数は、andまたは、orを指定します。デフォルトはandで、orを指定すると、orWhereIn()メソッドと同じWHERE句を生成します。第4引数は、NOT演算子を指定します。デフォルトはfalseです。NOT演算子を使う場合はtrueを指定します。

基本例

//Fluentクエリービルダー
DB::table('users')->whereIn('id',array(1,3,5))->get();

//Eloquent ORM
User::whereIn('id',array('1,3,5)->get();
  • idが1,3,5のデータを抽出します。

IN演算子

IN演算子は対象の値が指定した値の一覧にあるかどうかを判定します。対象値には式やフィールド名を指定します。

WHERE age IN(22,32,42)

上記では、ageカラム(フィールド)の値が22,32,42のデータを抽出します。

関連メソッド

  • orWhereIn(カラム,値)
  • whereNotIn(カラム,値,論理演算子)
  • orWhereNotIn(カラム,値)