在具有多个条件的Laravel中编写查询
我需要在Laravel中转换下面的查询。有人能帮忙吗在具有多个条件的Laravel中编写查询,laravel,eloquent,Laravel,Eloquent,我需要在Laravel中转换下面的查询。有人能帮忙吗 选择* 从测试表 式中(pttid不在5或(pttid=6且为!=1)) 和(草皮在'2019-01-01'和'2019-01-01'之间| |更新在'2019-01-01'和'2019-01-01'之间) 假设您有一个TestTable模型,您的查询可以是: $result = TestTable::select(['*']) ->where(function($q) { $q->where('pttid
选择*
从测试表
式中(pttid不在5或(pttid=6且为!=1))
和(草皮在'2019-01-01'和'2019-01-01'之间| |更新在'2019-01-01'和'2019-01-01'之间)
假设您有一个TestTable
模型,您的查询可以是:
$result = TestTable::select(['*'])
->where(function($q) {
$q->where('pttid', 'NOT IN', 5);
$q->orWhere(function($q2) {
$q2->where('pttid', '=', 6);
$q2->where('is', '!=', 1);
});
})->where(function ($q3) {
$q3->whereBetween('sod', ['2019-01-01', '2019-01-01']);
$q3->orWhereBetween('updat', ['2019-01-01', '2019-01-01']);
})->get();
以最干净的方式执行此操作:
- 以以下方式创建
模型:TestTable
php artisan make:model TestTable
- 然后在控制器中通过它的名称调用它
- 最后,用以下方式编写查询:
whereBetween
和或whereBetween
尽管通过DB
facade调用表名,但始终尝试使用模型,因为这会使维护代码更加困难
use TestTable;
$data = TestTable::select('*')
->whereRaw("pttid NOT IN 5 OR (pttid = 6 AND is != 1)")
->whereBetween('sod', ["2019-01-01", "2019-01-01"])
->orWhereBetween('updat', ["2019-01-01", "2019-01-01"])
->get();