Mysql 不明确的列名laravel 5.6+

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

字段列表中名为列“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 `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 

您还可以重新考虑您的命名策略,下一次,请参见

请您复制并粘贴代码而不是添加屏幕截图。请您复制并粘贴代码而不是添加屏幕截图。