👻

Laravel・データベースからデータ取得

2022/02/18に公開

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