👻
Laravel・データベースからデータ取得
LravelのQuery Builder便利ですよね。
SQLをそこまで理解していない自分でもどうにかしてくれる代物です。。。
(そのうちどうにかしないと)
今回は、自分の使用した範囲で形にしていきます。
get()
対象となる全てのデータを取得します。
hogeController.php
use App\Item;
class HogeController extends Controller
{
public function hogehoge()
{
$item = Item::get();
}
}
first()
対象となるデータの最初のものだけを取得
hogeController.php
use App\Item;
class HogeController extends Controller
{
public function hogehoge()
{
$item = Item::first();
}
}
find()
id番号を指定するとそのid番号のデータを取得
hogeController.php
use App\Item;
class HogeController extends Controller
{
public function hogehoge($id)
{
$item = Item::find($id);
}
}
with(),
リレーションしているテーブルのデータも一緒に取得します。
hogeController.php
use App\Item;
class HogeController extends Controller
{
public function hogehoge()
{
$item = Item::with(['tags', 'likesusers', 'goodsusers']);
}
}
※modelで作成した関数名で指定します。
ちなみにリレーションのデータを検索して取得することも出来ます。
hogeController.php
use App\Item;
class HogeController extends Controller
{
public function hogehoge()
{
$item = Item::with(['tags'=>
function ( $query ) use ( $tagbook )
{
return $query->where('tags.id', $tagbook);
}
)
]);
}
}
※whereHas()と挙動は似ていますが、with()の場合は、リレーション先にデータがなくてもtagsのデーターを取得できますが、whereHas()はtagsのデーターも取得しません。
where()
該当するデータを探し出し取得します
hogeController.php
use App\Item;
class HogeController extends Controller
{
public function hogehoge()
{
$item = Item::where('name', '薬草')->get();
}
}
LIKE
を使用してのあいまい検索
- 「薬草」で始まる言葉を検索
- 「薬草」で終わる言葉の検索
- 「薬草」が含まれる言葉の検索
hogeController.php
use App\Item;
class HogeController extends Controller
{
public function hogehoge($id)
{
$item = Item::where('name', 'like', '薬草%')->get();// 「薬草」で始まる言葉
$item = Item::where('name', 'like', '%薬草')->get();// 「薬草」で終わる言葉
$item = Item::where('name', 'like', '%薬草%')->get();// 「薬草」が含まれる言葉
}
}
orderBy()
並び順を変更します。
- asc: 昇順 ( 例 1,2,3,4 )
- desc: 降順 ( 例 4,3,2,1 )
hogeController.php
use App\Item;
class HogeController extends Controller
{
public function hogehoge()
{
$item = Item::orderBy('id', 'asc')->get();
}
}
count()
取得したデータの件数を取得
hogeController.php
use App\Item;
class HogeController extends Controller
{
public function hogehoge()
{
$item = Item::count();
}
}
とりあえず、今のところ以上です。
使用している機能少ないですね。
Query Builder
にはまだまだ沢山の機能があります。今後、色々と試し実際に動かし自分自身で体験できたら、また形に残していこうと思います。
Discussion