0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Laravel】ORM

Posted at

こちらの記事は以下の書籍を参考にアウトプットとして執筆しました。
PHPフレームワーク Laravel入門 第2版

検索とスコープ

スコープとはレコードを絞り込むた目の機能

where

IDによる検索はfindうぃ使えばできた。
他の検索はwhereと同じようなものがモデルクラスにも用意されている。

複数のレコードを取得

$変数=モデルクラス::where(フィールド名,)=>get();

最初のレコードだけを取得

$変数=モデルクラス::where(フィールド名,)=>first();

このwhereはビルダクラスのインスタスを返す。
これはDBクラスビルダとは違いうがとても似ていて、ほとんど同じを考えて構わない

スコープの利用

whereはDBクラスとナジ感覚で操作できる。しかしモデルクラスのほうが使い勝手は良い。
モデルクラスを使うさらなるメリットとしてスコープがある。
これは特定条件の検索ができる。
whereで複雑な検索をしようとすると、whereをいくつもつなぎ合わせるとわかりにくくなるがスコープを使うとわかりやすくなる

スコープには

  • ローカルスコープ
  • グローバルスコープ

の2つがある

ローカルスコープ

モデル内にメソッドを酔いするもの。
呼び出したときだけスコープが機能する。

グローバルスコープ

ローカルスコープは
検索条件を設定してBuilderを返すメソッドを用意してそれを呼び出すもの。
グローバルスコープは処理を用意していおくだけでそのモデルでのすべてのレコード取得が適応される。

専用のメソッド通いされていおり、それを利用する。

bootメソッド

処理の組み込みはモデルがサレク生される際の初期化処理で実行する。

boot初期がメソッドの基本

protected static function boot()
{
  parent::boot();
  //初期化処理  
}

出典:PHPフレームワーク Laravel入門 第2版

静的メソッドのためモデルインスタンス自身を利用する方法は欠けない。
グローバルスコープでの処理の用意はaddGlobalScopeを使う

static::addGlobalScope(スコープ名,function(Builder $builder))
{
  //絞り込み処理
}

出典:PHPフレームワーク Laravel入門 第2版

これはグローバルスコープを追加するメソッドでこれをオーバーライドしてグローバルスコープを追加する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?