Laravel便利メソッド第2弾!
今回は「pluck」と「value」を使っていきます!
前回同様、クエリビルダを使用する際の便利メソッドです!
pluckくん
pluckは必要なカラムのデータだけ取り出せるメソッドです!
見た方が分かりやすいので実演します。
Userテーブルからユーザーデータを取り出し、名前のみ表示していきたいとします。
$users = User::all()
return view('welcome2', ['users' => $users]);
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
@foreach ($users as $user)
<p> {{ $user->name }}</p>
@endforeach
</body>
</html>
▽表示結果
今まではこう書いていました。
悪いわけではないのですが、
現在の$userにはidなどの別の情報も入ってる状態になり、ちょっとスマートではないです。
事前に「名前のみを格納した配列」を作成しておいた方がスマートです。
そういった場合にpluckを使用します。
$users_name = User::all()->pluck('name');
return view('welcome2', ['users_name' => $users_name]);
pluckで「name」のカラムだけ取り出しました。
$userNameの中身を見てみると…
余計なidなどの情報はなく、nameの情報のみの配列が返ってきています。
これをforeachで表示してあげれば完成です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
@foreach ($users_name as $users_name)
<p> {{ $user_name }}</p>
@endforeach
</body>
</html>
▽表示結果
こちらの方がちょっとスマートですね。
SQLでいう「SELECT “name” FROM “users”」です。
ちなみに、idをキー、nameをバリューとした配列にすることもできます。
pluckは第二引数を取ることができ、
pluck(valueにしたい値, keyにしたい値)という仕組みになっていますので、
$users_name = User::all()->pluck('name', 'id');
return view('welcome2', ['users_name' => $users_name]);
このように書けば、keyにid、valueにnameの配列を作成することができます。
これをこんな感じで表示してあげると…
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
@foreach ($users as $user_id => $user_name)
<p> {{ $user_id }}</p>
<p> {{ $user_name }}</p>
@endforeach
</body>
</html>
▽結果表示
何かスマートですね。何か。
SQLでいう「SELECT “name, email” FROM “users”」です。
以上、pluckでした。
valueくん
カラムの値を1個だけ欲しいよ~って時に使います。
Userテーブルからidが1の人の名前が欲しいとします。
$user = User::find(1);
return view('welcome2', ['user' => $user]);
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<p> {{ $user->name }}</p>
</body>
</html>
もうちょっとスマートにします。
$user_name = User::value('name');
return view('welcome2', ['user_name' => $user_name]);
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<p> {{ $user_name }}</p>
</body>
</html>
Userテーブルからnameカラムのデータを一つ取り出しておき、
表示するだけにしました。
ちょっとスマートになりましたね。
SQLでいう「SELECT “name” FROM “users” LIMIT 1」です。
おわりに
今回は「pluck」「value」の紹介をしました。
こちらに便利メソッド総まとめのサイトがあるので、ぜひ参考にしてください。
Laravel、ほんと便利ですね~
バージョン変更にあたって毎回のように書き方が変わるので
正直むかついてましたが、便利に使えるように日々努力されているのでしょう。多分。
今回はここまで!
Enjoy Hacking!!