Mysql
 sql >> база данни >  >> RDS >> Mysql

Laravel 4:Как да приложим условие WHERE към всички заявки от клас Eloquent?

Отговорът беше даден, когато нямаше обхват на заявката налична функция.

Можете да замените основната заявка, само за Post модел, като

class Post extends Eloquent
{
    protected static $_allowUnapprovedPosts = false;

    public function newQuery()
    {
        $query = parent::newQuery();

        if (!static::$_allowUnapprovedPosts) {
            $query->where('approved', '=', 1);
        } else {
            static::$_allowUnapprovedPosts = false;
        }

        return $query;
    }

    // call this if you need unapproved posts as well
    public static function allowUnapprovedPosts()
    {
        static::$_allowUnapprovedPosts = true;

        return new static;
    }
}

Сега просто използвайте всичко, но неодобрените потребители няма да се показват в резултата.

$approvedPosts = Post::where('title',  'like', '%Hello%');

Сега, ако трябва да извлечете всички публикации, дори и неодобрени, можете да използвате

$approvedPosts = Post::allowUnapprovedPosts()->where('title',  'like', '%Hello%');

Актуализация (използвайки обхвата на заявката):

Тъй като Laravel вече предоставя Глобални обхвати на заявки , използвайте, че вместо това хакерско решение, забележете датата на този отговор, той е твърде стар и толкова много неща са се променили досега.

// Using a local query scope
class Post extends Eloquent
{

    public function scopeApproved($query)
    {
        return $query->where('approved', 1);
    }
}

Можете да го използвате като:

$approvedPosts = Post::approved()->get();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Когато използвате заключване на MySQL FOR UPDATE, какво точно е заключено?

  2. Мога ли да използвам слоя на базата данни на Laravel самостоятелно?

  3. Как Wordpress свързва публикации към категории в своята база данни?

  4. Тестване на връзка с база данни на Entity Framework

  5. Защо времето на MySQL unix спира под 32-битовото ограничение за цяло число без знак?