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) “” }

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(カラム,値)

Builder::lists()メソッド

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

Builder::lists(カラム,キー)

Builder::listsメソッドは、第1引数で指定したカラムの値のリスト配列を生成します。第2引数は、オプションでキーを指定します。デフォルトはNULL値です。

基本例

//Fluentクエリービルダー
DB::table('users')->lists('email');

//Eloquent ORM
User::lists('email');

//上記のリストを表示する
echo '<ul>';
foreach($sql as $s):
echo '<li>'.$s.'</li>';
endforeach;
echo '</ul>';
  • 10行目:$s->emailではなくて、$sである点に注意(勘違いしやすい)。

基本例2

//第2引数を指定した例題
Route::get('user',function(){
$sql=User::lists('email','id');
echo '<ul>';
foreach($sql as $key=>$s):
echo '<li>ID'.$key.'のemailは'.$s.'</li>';
endforeach;
echo '</ul>';
});
  • 3行目:第2引数にidをキーとして指定しています。
  • ブラウザで表示すると下記のようになります。
    laravel4_082

Builder::orderBy()メソッド

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

Builder::orderBy(カラム,ソート条件)

Builder::orderBy()メソッドは、ORDER BY句を生成します。orderByメソッドは第1引数で、指定したカラムの値でレコードを並べ替え(ソート)します。第2引数はオプションで昇順または、降順の並べ替え条件(asc,desc)を指定します。デフォルトはascです。

基本例

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

//Eloquent ORM
User::orderBy('age','desc')->get();
  •  ageカラムを降順(数字の大きい順)に並べ替えたデータを取得します。

Builder::first()メソッド

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

Builder::first()

Builder::first()メソッドは、クエリを発行し、最初の結果を取得します。引数はオプションで、表示するカラム名を配列で指定します。デフォルトは全カラムです。

基本例

//Fluentクエリービルダー
DB::table('users')->first();

//Eloquent ORM
User::first();

getとの違い

getメソッドは、複数のオブジェクトを取得するのに対して、firstメソッドは、オブジェクトを一つ(最初のオブジェクト)しか取得しません。ですので、引き渡したデータの表示方法には明確な違いがありますので、注意してください。

getで一つの値を取得した場合

Route::get('user',function(){
//id番号が1のデータを取得
$sql=DB::table('users')->where('id','=',1)->get();
//取得したデータの表示
echo $sql[0]->email;
});

firstで値を取得した場合

Route::get('user',function(){
//id番号が1のデータを取得
$sql=DB::table('users')->where('id','=',1)->first();
//取得したデータの表示
echo $sql->email;
});
  • 上記に、getとfirstで同じようなクエリを生成してみました。取得したデータは両方ともid番号1のデータですが、getとfirstでデータの表示方法が違うのがわかりますでしょうか。getの場合は複数のオブジェクトを抽出したのですが、結果として一つしかデータがなかったのに対し、firstの場合は元々データの数に関係なく、一つのデータ(最初のデータ)しか取得しないのです。ですので、データの表示方法に違いが生じます。