Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Laravel 4:Làm thế nào để áp dụng điều kiện WHERE cho tất cả các truy vấn của một lớp Eloquent?

Câu trả lời được đưa ra khi không có phạm vi truy vấn tính năng có sẵn.

Bạn có thể ghi đè truy vấn chính, chỉ dành cho Post mô hình, như

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

Bây giờ, chỉ cần sử dụng bất kỳ thứ gì, nhưng những người dùng chưa được phê duyệt sẽ không xuất hiện trong kết quả.

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

Bây giờ, nếu bạn cần truy xuất tất cả các bài đăng ngay cả những bài chưa được duyệt thì bạn có thể sử dụng

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

Cập nhật (Sử dụng phạm vi truy vấn):

Kể từ đó, Laravel hiện cung cấp Phạm vi truy vấn toàn cầu , tận dụng rằng thay vì giải pháp hacky này, hãy lưu ý ngày của câu trả lời này, nó quá cũ và hiện tại có quá nhiều thứ đã thay đổi.

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

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

Bạn có thể sử dụng nó như:

$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. Chuỗi trống chèn một số 0, không phải một chuỗi rỗng

  2. Phương pháp hay nhất cho hệ thống lập phiên bản dữ liệu mysql

  3. giá trị đã chọn lấy từ db vào tùy chọn hộp chọn thả xuống sử dụng lỗi php mysql

  4. Làm cách nào để sử dụng hàng câu lệnh SELECT IF trong mySQL để THAM GIA một bảng khác?

  5. Tách một chuỗi và lặp qua các giá trị trong Thủ tục MySql