Câu trả lời:
Sử dụng Nhóm tham số ( Laravel 4.2 ). Ví dụ của bạn, nó sẽ giống như thế này:
Model::where(function ($query) {
$query->where('a', '=', 1)
->orWhere('b', '=', 1);
})->where(function ($query) {
$query->where('c', '=', 1)
->orWhere('d', '=', 1);
});
Nếu bạn muốn sử dụng tham số cho a, b, c, d trong Laravel 4
Model::where(function ($query) use ($a,$b) {
$query->where('a', '=', $a)
->orWhere('b', '=', $b);
})
->where(function ($query) use ($c,$d) {
$query->where('c', '=', $c)
->orWhere('d', '=', $d);
});
nếu bạn muốn sử dụng dấu ngoặc đơn trong laravel 4 và đừng quên quay lại
Trong Laravel 4 (ít nhất), bạn cần sử dụng $ a, $ b trong ngoặc đơn như trong ví dụ
$a = 1;
$b = 1;
$c = 1;
$d = 1;
Model::where(function ($query) use ($a, $b) {
return $query->where('a', '=', $a)
->orWhere('b', '=', $b);
})->where(function ($query) use ($c, $d) {
return $query->where('c', '=', $c)
->orWhere('d', '=', $d);
});
Trong trường hợp bạn đang lặp các điều kiện HOẶC, bạn không cần truy vấn $ thứ hai-> từ các bài đăng khác (thực ra tôi không nghĩ rằng bạn cần nói chung, bạn chỉ có thể sử dụng orWhere trong phần lồng nhau nếu dễ hơn)
$attributes = ['first'=>'a','second'=>'b'];
$query->where(function ($query) use ($attributes)
{
foreach ($attributes as $key=>value)
{
//you can use orWhere the first time, doesn't need to be ->where
$query->orWhere($key,$value);
}
});
use
từ khóa để sử dụng biến thuộc tính bên trong.
$ a, $ b, $ c, $ d có thể là các giá trị động theo truy vấn
->where(function($query) use ($a, $b)
{
$query->where('a', $a)
->orWhere('b',$b);
})
->where(function($query) use ($c, $d)
{
$query->where('c', $c)
->orWhere('d',$d);
})
Đơn giản chỉ cần sử dụng trong Laravel Eloquent:
$a='foo', $b='bar', $c='john', $d='doe';
Coder::where(function ($query) use ($a, $b) {
$query->where('a', '=', $a)
->orWhere('b', '=', $b);
})->where(function ($query) use ($c, $d) {
$query->where('c', '=', $c)
->orWhere('d', '=', $d);
})->get();
Sẽ tạo một truy vấn như:
SELECT * FROM <table> WHERE (a='foo' or b='bar') AND (c='john' or d='doe');
Một cách khác mà không cần sử dụng Modal
Cơ sở dữ liệu: stock Cột: id, name, company_name, exchange_name, status
$name ='aa'
$stocks = DB::table('stocks')
->select('name', 'company_name', 'exchange_name')
->where(function($query) use ($name) {
$query->where('name', 'like', '%' . $name . '%')
->orWhere('company_name', 'like', '%' . $name . '%');
})
->Where('status', '=', 1)
->limit(20)
->get();
Bạn cũng có thể sử dụng phạm vi truy vấn để làm cho mọi thứ gọn gàng hơn một chút, vì vậy bạn có thể làm một cái gì đó như:
Invoice::where('account', 27)->notPaidAt($date)->get();
Sau đó trong mô hình của bạn
public function scopeNotPaidAt($query, $asAt)
{
$query = $query->where(function ($query) use ($asAt) {
$query->where('paid', '=', '0000-00-00')->orWhere('paid', '>=', $asAt);
});
return $query;
}
YourModel::where(function ($query) use($a,$b) {
$query->where('a','=',$a)
->orWhere('b','=', $b);
})->where(function ($query) use ($c,$d) {
$query->where('c','=',$c)
->orWhere('d','=',$d);
});
Cách tốt nhất để sử dụng dấu ngoặc vuông sử dụng chức năng gọi lại trong tài liệu hùng biện.
YourModal::where(function ($q) {
$q->where('a', 1)->orWhere('b', 1);
})->where(function ($q) {
$q->where('c', 1)->orWhere('d', 1);
});
Bạn không phải sử dụng
=
biểu tượng, nó là mặc định
Hãy nói rằng nếu bạn có một truy vấn có chứa dấu ngoặc trong ngoặc
WHERE (a = 1 OR (b = 1 and c = 5))
YourModal::where(function ($q) {
$q->where('a', 1)->orWhere(function($q2){
$q2->where('b', 1)->where('c', 5);
});
});
kẻo nói rằng bạn muốn tạo ra giá trị động
YourModal::where(function ($q) use($val1, $val2) {
$q->where('a', $val1)->orWhere(function($q2) use($val2){
$q2->where('b', $val2)->where('c', $val2);
});
});
function ($query) use ($param1, $param2)...
; Oh, bạn đã xóa bình luận của bạn.