Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Laravel 4:Jak zastosować warunek WHERE do wszystkich zapytań klasy Eloquent?

Odpowiedź została udzielona, ​​gdy nie było zakresu zapytania dostępna funkcja.

Możesz zastąpić główne zapytanie, tylko dla Post model, jak

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;
    }
}

Teraz po prostu użyj czegokolwiek, ale niezatwierdzeni użytkownicy nie pojawią się w wyniku.

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

Teraz, jeśli chcesz odzyskać wszystkie posty, nawet te niezatwierdzone, możesz użyć

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

Aktualizacja (przy użyciu zakresu zapytania):

Od tego czasu Laravel udostępnia teraz Globalne zakresy zapytań , użyj tego zamiast tego zwariowanego rozwiązania, zwróć uwagę na datę tej odpowiedzi, jest za stara i wiele się zmieniło.

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

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

Możesz go użyć tak:

$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. BIGINT UNSIGNED VALUE JEST poza zakresem Mój SQL

  2. Jak zaktualizować tabelę automatycznie, gdy inna tabela jest aktualizowana na innym serwerze mysql?

  3. Java ZonedDateTime zapisz w bazie danych

  4. JDBC zawsze testuje ostatni wiersz tabeli MySQL?

  5. Indeks przestrzenny w MySQL - BŁĄD - Nie można pobrać obiektu geometrii z danych wysyłanych do pola GEOMETRY