【Laravel・Eloquent】modelの関数名になぜscopeをつけるのか
scopeの定義方法
class Hoge extends Model {
public function scopeFuge($query, $code) {
//処理
}
}
class Hoge extends Model {
public function scopeFuge($query, $code) {
//処理
}
}
関数名にscopeを追加し、引数$query
と$code(引数名は自由)
を定義します。
引数
$queryとは
この引数は、whereで取得されるのと同じBuilderインスタンスが渡されます。
$code(引数名は自由)
コントローラから渡された引数がこの値に代入されます。
例
Person.php(Model)
class Person extends Model {
public function scopeNameEqual($query, $str)
{
return $query->where('name', $str);
}
}
PersonController.php(Controller)
use App\Person;
class PersonController extends Controller {
public function search(Request $request) {
$item = Person::nameEqual($request->input)->first();
//〜その他処理は割愛〜
return view('person.find, $param);
}
}
scopeを呼び出す時は、関数名のscopeを省略します。
なぜscopeを使うのか
scopeを使うことにより、上記の2つの引数が利用できるようになります。
Author And Source
この問題について(【Laravel・Eloquent】modelの関数名になぜscopeをつけるのか), 我々は、より多くの情報をここで見つけました https://qiita.com/anoonoll/items/f449da3237f2e7e45fe6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .