竞彩外围app:关联模型字段重复时导致出现SQL错误

浏览:259 发布日期:2018/08/06
<足球外围网 id="eb7db7ce4f5ecb846"> <足球外围网 id="ea0cb5324242b850e">
5.0.0 - 严重 - 已处理
足球外围网php版本:5.1.21
使用关联模型查询时,当关联的两个表中字段重复时,将会触发一处BUG
错误信息如下:SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'status' in where clause is ambiguous原因是两个表中存在同名字段`status`
php代码如下:$limit = $request->param('limit', 20);
        $recharge = Recharge::hasWhere('user', function ($query) use ($request) {
            $username = $request->param('username', '', 'trim');
            $mobile = $request->param('mobile', '', 'trim');
            $username != '' && $query->where('username', $username);
            $mobile !='' && $query->where('mobile', $mobile);
        })->where(function ($query) use ($request) {
            $currency = $request->param('currency', -1, 'intval');
            $status = $request->param('status', -1, 'intval');
            $startDateTime = $request->param('startDateTime', null, 'strtotime');
            $endDateTime = $request->param('endDateTime', null, 'strtotime');

            $currency != -1 && $query->where('currency_id', $currency);
            $status != -1 && $query->where('status', $status);
            $startDateTime != null && $query->where('create_time', '>=', $startDateTime);
            $endDateTime != null && $query->where('create_time', '<=', $endDateTime);
        })->paginate($limit);
查看错误的SQL语句:SELECT COUNT(*) AS tp_count
FROM 
`bc_recharge` `Recharge` 
INNER JOIN
`bc_users` `Users` ON `Recharge`.`user_id`=`Users`.`id`
WHERE ( `status` = :where_AND_status ) LIMIT 1 
临时在代码中where中将status改为Recharge.status可暂时解决此问题:$limit = $request->param('limit', 20);
        $recharge = Recharge::hasWhere('user', function ($query) use ($request) {
            $username = $request->param('username', '', 'trim');
            $mobile = $request->param('mobile', '', 'trim');
            $username != '' && $query->where('username', $username);
            $mobile !='' && $query->where('mobile', $mobile);
        })->where(function ($query) use ($request) {
            $currency = $request->param('currency', -1, 'intval');
            $status = $request->param('status', -1, 'intval');
            $startDateTime = $request->param('startDateTime', null, 'strtotime');
            $endDateTime = $request->param('endDateTime', null, 'strtotime');

            $currency != -1 && $query->where('currency_id', $currency);
            $status != -1 && $query->where('Recharge.status', $status);
            $startDateTime != null && $query->where('create_time', '>=', $startDateTime);
            $endDateTime != null && $query->where('create_time', '<=', $endDateTime);
        })->paginate($limit);
<足球外围网 id="ad196de4c105c1d8be">
<足球外围网 id="ad6b7d22ed07ed248d">
评论(
后面还有条评论,点击查看>>
<足球外围网 id="e997c2acdc76d56ad">
免费白菜 免费彩金 彩金免费领 免费白菜网 免费彩金送 免费彩金网 免费给彩金 免费领彩金 免费送白菜