Laravel извлечение записи модели - PullRequest
0 голосов
/ 31 марта 2020

Теперь у меня есть таблица с именем users и столбец с именем is_active в таблице users. Если я смогу написать код в модели, который получит is_active, то будет true, когда я сделаю запрос Users::all()? И если я хотел бы получить записи с is_active равным false, я могу просто написать Users::withInActive()->get()?

Это похоже на то, как deleted_at работает в laravel.

Ответы [ 2 ]

1 голос
/ 31 марта 2020

Для этого вы можете использовать global scopes. Как только вы определите их, он будет автоматически применяться к запросам. Для этого мы можем переопределить метод boot в модели.

Для выборки только активных пользователей:

use Illuminate\Database\Eloquent\Builder;

class User extends Model{
   ...
   static function boot(){
        parent::boot();
         static::addGlobalScope('active', function (Builder $builder) {
            $builder->where('is_active', true); // or 1 if you are using tinyint 
        });
   }

}

Для выборки неактивных пользователей :

Чтобы выбрать активных пользователей, вы можете просто пропустить прикрепленную область.

User::withoutGlobalScope('active')->get();
1 голос
/ 31 марта 2020

Просто используйте функцию where () для вашего запроса.

Users::where("is_active", true)->get();

Вот так.

Редактирование: Использование области действия

в вашей модели

public function scopeWithInActive($query)
{
    return $query->where('in_active', true);
}

и вы можете использовать свой прицел вот так

$users->withInActive()->get()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...