laravel - 如何解决违反完整性约束的问题:where 子句中的 1052 列“agent_id”不明确
问题描述
完整性约束违规:1052 列 'agent_id' 在 where 子句不明确
我已经尝试但仍然找不到这个数据表的错误
public function customerOrderList(Request $request, $agent_id){
$customer_orders = CustomerOrder::join('agent as a', 'a.agent_id','=','customer_order.agent_id')
->select('customer_order.*', 'a.name as agent_name')
->where('agent_id', $agent_id)
->get();
$datatables = DataTables::of($customer_orders)
->addColumn('actions', function($customer_order){
$html ='';
$view = route('customer-order.invoice', $customer_order->doc_id);
$html .= "<a class='btn btn-primary btn-sm' href='$view'><i class='far fa-fw fa-eye'></i></a>";
return $html;
})
->rawColumns(['actions']);
return $datatables->make(true);
}
- 显示数据表
解决方案
这意味着您的查询中的多个表具有相同的agent_id
列,您的查询无法确定使用哪一个。您'customer_order.agent_id'
在一个子句中使用过,但只'agent_id'
在另一个子句中使用过。
使用时->join()
,有时需要尽可能具体地引用您的引用(取决于您选择的表结构/列等):
$customer_orders = CustomerOrder::join('agent as a', 'a.agent_id','=','customer_order.agent_id')
->select('customer_order.*', 'a.name as agent_name')
->where('customer_order.agent_id', $agent_id) // Here, add table name before `agent_id`, likely `customer_order`
->get();
推荐阅读
- java - HttpServletResponse 到 javax.ws.rs.core.Response
- python-3.x - 如何在 Python 中构建一个 tkinter ttk 文本框
- python - 使用 TensorFlow 的一个奇怪的铸造问题
- javascript - DataTables function- table.row.add ,不使用表格内的按钮(javascript)
- php - 如何修复 PHP 中的“发送消息失败”错误 - 提交按钮 HTML 不起作用
- python - 在列的集合类型中计数值
- docker - 如何在不使用 .dockerignore 的情况下跳过发送构建上下文?
- airflow - 如何从同一 DAG 运行中的其他任务实例中提取 xcom 值(不是最新的)?
- sql - 使用 xmllagg 的子查询错误和太多值
- angular - 运行 AoT 会改变布局