Mysql 不明确的列名laravel 5.6+
字段列表中名为列“id”的错误不明确 我曾试图通过在列上使用别名来修复它,但没有成功。查询如下所示:Mysql 不明确的列名laravel 5.6+,mysql,laravel,laravel-5,Mysql,Laravel,Laravel 5,字段列表中名为列“id”的错误不明确 我曾试图通过在列上使用别名来修复它,但没有成功。查询如下所示: SELECT `id` AS `pf_id`, `id_feature` AS `pf_if`, `id_feature_value` AS `pf_ifv`, `product_features`.`id_product` FROM `features` INNER JOIN `pro
SELECT `id` AS `pf_id`,
`id_feature` AS `pf_if`,
`id_feature_value` AS `pf_ifv`,
`product_features`.`id_product`
FROM `features`
INNER JOIN `product_features`
ON `product_features`.`id_feature` =
`features`.`pf_id`
WHERE `product_features`.`id_product` IN (
33003, 33004, 33011, 33012,
33013, 33015, 33016, 33017,
33018, 33019, 33020, 33021,
33022, 33023, 33024, 33025,
33026, 33029, 33030, 33032 )
AND `id_feature` = 5
Id仅用于选择和内部联接。它调用产品特性表和特性表。只有这段代码不起作用-产品上的任何其他关系都很好。以下是有关表结构和关系的其他信息:
$products = Product::select('id', 'id as DT_RowId', 'id_manufacturer', 'sku', 'price_retail', 'active')
->with([
'manufacturer' => function ($m) {
$m->with(['defaultTranslation' => function ($query) {
$query->select('id', 'id_manufacturer', 'name');
}]);
},
'defaultTranslation' => function ($dt) {
$dt->select('id', 'id_product', 'name');
},
'features' => function ($qf) {
$qf->select('id as pf_id', 'id_feature as pf_if', 'id_feature_value as pf_ifv');
$qf->where('id_feature', 5);
},
]);
$result = $products->orderBy('id', 'DESC')->paginate($itemNumber, ['*'], 'page', $page);
产品功能结构:
特点:
模型中的特征关系函数
public function features()
{
return $this->hasManyThrough('App\SupremeShop\Models\Feature',
'App\SupremeShop\Models\ProductFeature',
'id_product',
'id',
'id',
'id_feature');
}
谢谢你的帮助 始终限定您的列,例如
SELECT pf.id pf_id
, pf.id_feature pf_if
, pf.id_feature_value pf_ifv
, pf.id_product
FROM features f
JOIN product_features pf
ON pf.id_feature = f.id
WHERE pf.id_product IN (
33003, 33004, 33011, 33012,
33013, 33015, 33016, 33017,
33018, 33019, 33020, 33021,
33022, 33023, 33024, 33025,
33026, 33029, 33030, 33032 )
AND pf.id_feature = 5
您还可以重新考虑您的命名策略,下一次,请参见始终限定您的列,例如
SELECT pf.id pf_id
, pf.id_feature pf_if
, pf.id_feature_value pf_ifv
, pf.id_product
FROM features f
JOIN product_features pf
ON pf.id_feature = f.id
WHERE pf.id_product IN (
33003, 33004, 33011, 33012,
33013, 33015, 33016, 33017,
33018, 33019, 33020, 33021,
33022, 33023, 33024, 33025,
33026, 33029, 33030, 33032 )
AND pf.id_feature = 5
您还可以重新考虑您的命名策略,下一次,请参见请您复制并粘贴代码而不是添加屏幕截图。请您复制并粘贴代码而不是添加屏幕截图。