Как я могу определить, где по умолчанию условие для всех запросов на выборку в моих моделях? - PullRequest
0 голосов
/ 27 декабря 2018

Мне нужно установить условие по умолчанию где в моих моделях.

Так что на самом деле мне нужно установить его во всех моих запросах выбора.

Запрос типа:

->where('status','active')

Ответы [ 3 ]

0 голосов
/ 27 декабря 2018

Вы можете использовать область видимости (локальную или глобальную область) в модели:

Глобальная область Пример:

В Model.php:

 protected static function boot()
    {
        parent::boot();    
        static::addGlobalScope('status', function (Builder $builder) {
            $builder->where('status', 'active');
        });
    }

Пример локальной области:

В Model.php

public function scopeIsActive($query)
    {
        return $query->where('status', 'active');
    }

в контроллере:

Model::isActive()->get();

source

0 голосов
/ 27 декабря 2018

Вы можете использовать Global Scope: https://laravel.com/docs/5.7/eloquent#global-scopes

Напишите это в вашей модели, которую вы хотите запросить с условием

/**
 * The "booting" method of the model.
 *
 * @return void
 */
protected static function boot()
{
    parent::boot();

    static::addGlobalScope('status', function (Builder $builder) {
        $builder->where('status', 'active');
    });
}
0 голосов
/ 27 декабря 2018

Вы должны попробовать это:

Ваша модель:

class News extends Eloquent {
   public function scopeStatus($query)
    {
     return $query->where('status', '=', 1);
    }
 }

Ваш контроллер:

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