Что разница между использованием в красноречивойкрасноречив с помощью scopeSomeName() против SomeName()
class SomeModel extends Model{
public function active(){
return $this->where('active','=',1);
}
}
против:
class SomeModel extends Model{
public function scopeActive($query){
return $query->where('active','=',1);
}
}
я могу использовать их как так же, как и я получаю тот же результат ...
$SomeModel->active()->get();
Есть ли какое-либо преимущество в отношении «возможности»?
редактировать: Я имею в виду это из документации http://laravel.com/docs/5.1/eloquent#query-scopes
Прицелы позволяют определить общие наборы ограничений, которые вы можете легко повторно использовать в вашем приложении. Например, вам может понадобиться , чтобы часто получать всех пользователей, которые считаются «популярными». Для определите область действия, просто префикс метода модели Eloquent с областью видимости.
но, как я уже сказал, я могу сделать то же самое без префикса с «областью», так зачем вообще беспокоиться?
Возможно, это улучшает читаемость вашего кода, заявляя, что функция является областью ... – Amarnasan
Использование области дает вам доступ к объекту Builder. Это позволяет вам контролировать такие вещи, как привязки и методы доступа, которые недоступны с помощью '$ this' на самой модели –