#scopeHogeとscopeOfHogeを使う
Book.php
class Book extends Model
{
...
public function scopeOfCode($query,$code){
return $this->where('code',$code)->firstOrFail();
}
}
こんなふうに書くことで、findOrFailと同じように使えるクエリが増える。
BookController.php
public function book($code){
$book = book::ofCode($code);
return view('book.book',[
'book' => $book
]);
}
scopeActive (scopeHoge)型
Userモデルのactiveチェックなどに役立つ。
User.php
public function scopeActive($query)
{
return $query->where('active', 1);
}
使用例
$user = User::active()->get();
scopeOfType (scopeOfHoge)型
scopeActiveみたいな時に、引数がほしい時に使える。
Book.php
class Book extends Model
{
...
public function scopeOfCode($query,$code){
return $this->where('code',$code)->firstOrFail();
}
}
もちろん、引数は初期値を入れれる。
Book.php
class Book extends Model
{
...
public function scopeOfCode($query,$code = 1){
return $this->where('code',$code)->firstOrFail();
}
}
whereクエリでおわらすことも当然可能。
Book.php
class Book extends Model
{
...
public function scopeOfCode($query,$code = 1){
return $this->where('code',$code);
}
}
僕は、使い勝手がいいので、firstOrFailを利用して、findOrFailの様に利用しています。
DBのunique設計にもよるのかな。まあ、書くコードかなり減ったからよし。