php - 雄辩的子查询因已知字段而失败
问题描述
我试试这个查询:
$invoice = Invoice::query()
->select([
'invoices.id',
'invoices.created_at',
'invoices.start_date',
'invoices.end_date',
'agencies.name as agency',
'agencies.address',
'agencies.zipcode',
'agencies.phone',
'consumers.name as consumer',
'consumers.addresses',
'invoice_items.amount as total',
'billings.hours',
'billings.rate',
'billings.amount',
])
->addSelect(['agency_address' => \App\Models\City::select('address')
->whereColumn('cities.zipcode', 'agencies.zipcode')
->first()->address])
->leftJoin('agencies', 'agencies.id', 'invoices.agency_id')
->leftJoin('cities', 'cities.zip', 'agencies.zipcode')
->leftJoin('invoice_items', 'invoice_items.invoice_id', 'invoices.id')
->leftJoin('billings', 'billings.id', 'invoice_items.billing_id')
->leftJoin('consumers', 'consumers.id', 'billings.consumer_id')
->find($id);
但它失败了:
SQLSTATE [42S22]:未找到列:1054 'where 子句'中的未知列 'agencies.zipcode'(SQL:
address
从v_cities
wherev_cities
.zipcode
=agencies
.zipcode
limit 1 中选择)
该字段包含在主选择中,并且在没有 addSelect 方法的情况下可以很好地返回数据。可能是什么原因?
解决方案
推荐阅读
- windows - IOCP 模式下 ConnectEx() 超时?
- javascript - Eclipse 2018 更好的 JavaScript 支持
- r - 匹配另一个数据框中的日期到日期间隔
- node.js - NodeJS http get方法访问响应函数中的url
- nginx - 白名单允许特定请求 Nginx
- python - 识别具有多个馆藏的重复项
- python - Django - 禁用相关集中的重复项
- ios - iOS 离子应用程序没有收到 FCM 静默通知
- reactjs - React Dev Tools - 无法在 Electron 应用程序中使用分析器
- html - CSS Scale 与填充冲突