php - Laravel 列未找到:1054 未知列
问题描述
我需要获取用户出口的产品列表,但它返回此错误
SQLSTATE[42S22]: Column not found: 1054 Unknown column '1' in 'on clause' (SQL: select * from `barcodes` inner join `outlet_products` on `1` = `outlet_products`.`outlet_id
逻辑
仅获取用户出口的产品列表(不是所有出口的所有产品)
- 产品
basically just name and description
(有很多条码) - 条码(属于产品,属于多网点)
- 出口(有许多条码)
代码
$user = $request->user();
$outlets = $user->outlets->pluck('id');
$products = Barcode::with('product', 'damages', 'outlet')
->join('outlet_products', function ($join) use($outlets) {
$join->on($outlets, '=', 'outlet_products.outlet_id');
})
->get();
Product model
public function barcodes()
{
return $this->hasMany(Barcode::class, 'product_id', 'id');
}
Barcode model
public function product()
{
return $this->belongsTo(Product::class);
}
public function outlet()
{
return $this->belongsToMany(Outlet::class, 'outlet_products', 'barcode_id', 'outlet_id');
}
outlet model
public function barcodes()
{
return $this->belongsToMany(Barcode::class, 'outlet_products', 'outlet_id', 'barcode_id');
}
奥特莱斯的产品实际上是通过条码退货的(奥特莱斯有很多条码,每个条码属于一个产品)。
任何想法?
更新
我对我的代码进行了一些更改,现在是这样的:
$products = Barcode::with('product', 'damages', 'outlet')
->join('outlet_users', 'outlet_users.user_id', '=', $user->id)
->join('outlet_products', 'outlet_products.outlet_id', '=', 'outlet_users.outlet_id')
->get();
现在它返回此错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column '4' in 'on clause' (SQL: select * from `barcodes` inner join `outlet_users` on `outlet_users`.`user_id` = `4` inner join `outlet_products` on `outlet_products`.`outlet_id` = `outlet_users`.`outlet_id`)
基本上通过这个新功能,我试图获取用户 outlet.id 并将其与条形码(产品)outlet.id 匹配。
解决方案
你走错路了。如果要获取用户出口列表的产品列表
使用 product_id 更新您的出口模型。
在路上:
$user = $request->user();
$outlets = $user->outlets->pluck('id');
$products = Barcode::with('product','damages','outlet')
->whereHas('outlet', function ($q) use($outlets) {
$q->whereIn('id',$outlets);
})
->get();
推荐阅读
- reactjs - 在渲染方法中调用 SFC 函数有什么好处吗?
- java - java with opencv 程序未在命令提示符下运行,包 org.opencv.core 不存在
- javascript - 如何使用动态文件路径要求 json 文件
- wordpress - 如何更改.../wp-admin/...(不仅仅是登录页面)
- javascript - Magento 2:未定义时刻
- c++ - 为什么结构化绑定因 'std::tie' d 对象而失败?
- excel - 将两个“书挡”之间的多张工作表中的数据合并到一张工作表中
- android - 有什么方法可以从顶级项目 gradle 中删除“classpath 'com.google.gms:google-services:4.2.0' 依赖项
- java - 推送通知未在通知栏 Android 中显示
- java - java.lang.NoClassDefFoundError : 无法初始化类 java.awt.font