Nếu bạn chỉ muốn xây dựng truy vấn / lấy dữ liệu thuần túy mà không có bất kỳ logic nào xung quanh nó, bạn có thể chỉ cần sử dụng Trình tạo truy vấn:
$results = DB::table('search_users')
->where('first_name', $firstname)
->where('last_name', $last_name)
->where('country', $country) //and so on
->whereBetween('loc_lng', array(-0.24272918701172, -0.24272918701172))
->whereBetween('loc_lat', array(51.47026338272, 51.47026338272))
->get();
Và chắc chắn rằng bạn có thể sử dụng cùng một cú pháp nếu bạn đang làm việc với Mô hình:
$users = User::where('key1', $value1)
->where('key2', $value2)
->whereBetween('loc_lng', array(-0.24272918701172, -0.24272918701172))
->whereBetween('loc_lat', array(51.47026338272, 51.47026338272))
->get();
Một chút giải thích bổ sung liên quan đến câu hỏi của bạn về cách sử dụng AND
hùng hồn:
AND
được sử dụng theo mặc định nếu bạn sử dụng 2 hoặc nhiều hơn where()
S. Vì vậy,
DB::table('search_users')->where('first_name', $firstname)
->where('last_name', $last_name)
bằng
SELECT * FROM search_users WHERE first_name = ? AND last_name = ?
Đối với OR
bạn có thể sử dụng orWhere()
:
DB::table('search_users')->where('first_name', $firstname)
->orWhere('last_name', $othername)
bằng
SELECT * FROM search_users WHERE first_name = ? OR first_name = ?
Và đôi khi bạn có thể cần một cái gì đó phức tạp hơn, ví dụ:
SELECT * FROM search_users
WHERE first_name = ?
AND (last_name = ? OR last_name = ?)
AND age > 27
Trong Eloquent, đây sẽ là:
DB::table('search_users')
->where('first_name', $firstname)
->where(function($query) {
$query->where('last_name', $lastName1);
$query->orWhere('last_name', $lastName2);
})
->where('age', '>', 27)