Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Laravel 4:Bagaimana cara menerapkan kondisi WHERE ke semua kueri kelas Eloquent?

Jawaban diberikan ketika tidak ada lingkup kueri fitur yang tersedia.

Anda dapat mengganti kueri utama, hanya untuk Post model, seperti

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

Sekarang, cukup gunakan apa saja, tetapi pengguna yang tidak disetujui tidak akan muncul di hasil.

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

Sekarang, jika Anda perlu mengambil semua posting bahkan yang tidak disetujui, Anda dapat menggunakan

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

Pembaruan (Menggunakan cakupan kueri):

Karena, Laravel sekarang menyediakan Cakupan Kueri Global , manfaatkan bahwa alih-alih solusi peretasan ini, perhatikan tanggal jawaban ini, terlalu tua dan banyak hal berubah sekarang.

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

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

Anda dapat menggunakannya seperti:

$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 - urutkan string yang dipisahkan koma di kolom

  2. Kesalahan saat menggunakan pernyataan yang disiapkan PDO dan LIMIT dalam kueri

  3. Tabel adalah 'hanya baca'

  4. MySQL KIRI GABUNG 3 tabel

  5. Laravel 5:menyinkronkan bidang tambahan melalui pivot