Php Laravel查询生成器:意外输出
在过去的两个小时里,我一直在努力处理一个使用Laravel查询生成器创建的MySQL查询,但我不明白为什么一个参数似乎被忽略了 查询生成器生成的查询如下所示:Php Laravel查询生成器:意外输出,php,mysql,laravel,Php,Mysql,Laravel,在过去的两个小时里,我一直在努力处理一个使用Laravel查询生成器创建的MySQL查询,但我不明白为什么一个参数似乎被忽略了 查询生成器生成的查询如下所示: select * from `deals` where ( ( `created_at` <= '2017-04-10 09:44:07' and `valid_until` >= '2017-04-10 09:44:07' ) or ( `created
select * from `deals` where
(
(
`created_at` <= '2017-04-10 09:44:07'
and `valid_until` >= '2017-04-10 09:44:07'
) or (
`created_at` <= '2017-04-10 09:44:07'
and `valid_until` <= '2017-04-10 09:44:07'
and `autodelete` = '2'
) or (
`created_at` <= '2017-04-10 09:44:07'
and `valid_until` <= '2017-04-10 09:44:07'
and `autodelete` = '0'
) or (
`created_at` <= '2017-04-10 09:44:07'
and `valid_until` is null
)
and `category_id` != '1'
) and `deals`.`deleted_at` is null
order by `order_date` desc, `created_at` desc
limit 20
offset 0
从'deals'中选择*
(
(
`创建于“=”2017-04-10 09:44:07”
)或(
`创建于年月日(“Y-m-d H:i:s”);
})
->orwhere(函数($query){
//结束,但有可能上传收据
$query->where('created_at',“请仔细查看您的参数分组
我已经重新构造了查询
删除了要使用whereNotIn的和类别_id!={Val}
重新组合查询
$query = Deal::where(function
($query){
$query->where(function ($query) {
// Active with an end date
$query->where('created_at', '<=', date("Y-m-d H:i:s"))
->where('valid_until', '>=', date("Y-m-d H:i:s"));
})
->orwhere(function ($query) {
// Ended, but with possibility to upload a receipt
$query->where('created_at', '<=', date("Y-m-d H:i:s"))
->where('valid_until', '<=', date("Y-m-d H:i:s"))
->where('autodelete', 2);
})
->orwhere(function ($query) {
// Ended, but keep it online
$query->where('created_at', '<=', date("Y-m-d H:i:s"))
->where('valid_until', '<=', date("Y-m-d H:i:s"))
->where('autodelete', 0);
})
->orwhere(function ($query) {
// No end date
$query->where('created_at', '<=', date("Y-m-d H:i:s"))
->where('valid_until', null);
});
});
if (!empty($deselectedCategories)) {
$catList =array();
foreach ($deselectedCategories as $key => $val) {
$catList[] = $val;
}
$query->whereNotIn('category_id', $catList);
}
$query->whereNull('deleted_at');
$deals = $query->orderBy('order_date', 'desc')->orderBy('created_at', 'desc')->paginate($resultsPerPage);
$query=Deal::where(函数)
($query){
$query->where(函数($query){
//带结束日期的活动
$query->where('created_at','=',date(“Y-m-dh:i:s”);
})
->orwhere(函数($query){
//结束,但有可能上传收据
$query->where('created_at','非常感谢您的努力:这看起来干净多了。但是,不幸的是,结果仍然是一样的。MySQL仍然忽略了类别id。从上面的示例来看,类别id为1的项目仍然包含在输出中。您是否有一些示例数据源来尝试从vers中生成的查询问题是:我不明白为什么,但当输出是这样时它会工作:使用查询生成器,我无法成功生成此查询。它一直停留在括号之间。我想了解为什么第一个版本不工作,因为在我看来它看起来是对的。正在使用的MySQL表只是一个简单的表没有任何高级设置。我看到你已经更新了你的代码,这一次它像一个魅力!非常感谢你!
$query = Deal::where(function
($query){
$query->where(function ($query) {
// Active with an end date
$query->where('created_at', '<=', date("Y-m-d H:i:s"))
->where('valid_until', '>=', date("Y-m-d H:i:s"));
})
->orwhere(function ($query) {
// Ended, but with possibility to upload a receipt
$query->where('created_at', '<=', date("Y-m-d H:i:s"))
->where('valid_until', '<=', date("Y-m-d H:i:s"))
->where('autodelete', 2);
})
->orwhere(function ($query) {
// Ended, but keep it online
$query->where('created_at', '<=', date("Y-m-d H:i:s"))
->where('valid_until', '<=', date("Y-m-d H:i:s"))
->where('autodelete', 0);
})
->orwhere(function ($query) {
// No end date
$query->where('created_at', '<=', date("Y-m-d H:i:s"))
->where('valid_until', null);
});
});
if (!empty($deselectedCategories)) {
$catList =array();
foreach ($deselectedCategories as $key => $val) {
$catList[] = $val;
}
$query->whereNotIn('category_id', $catList);
}
$query->whereNull('deleted_at');
$deals = $query->orderBy('order_date', 'desc')->orderBy('created_at', 'desc')->paginate($resultsPerPage);