aide prestashop PhenixSuite Help
    • Catégories
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Recherche
    • S'inscrire
    • Se connecter

    warning SQL ( debug activé ) dans Search.php

    Planifier Épinglé Verrouillé Déplacé PhenixSuite
    6 Messages 2 Publieurs 740 Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • E Hors-ligne
      esa
      dernière édition par

      bonjour

      J'ai le warning suivant quand je lance une recherche produit depuis la boutique.

      Warning: PDO::query(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'product_attribute_shop.id_product_attribute' in 'field list' in /var/www/html/technokaz/classes/db/DbPDO.php on line 151
      [ SQL ERROR ]
      Unknown column 'product_attribute_shop.id_product_attribute' in 'field list'
      
                      SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity,
                          pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`,
                          pl.`name`, MAX(i.`id_image`) id_image, il.`legend`, m.`name` manufacturer_name ,(
                          SELECT SUM(weight)
                          FROM ?search_word sw
                          LEFT JOIN ?search_index si
                              ON(sw.id_word = si.id_word)
                          WHERE sw.id_lang = 1
                          AND sw.id_shop = 1
                          AND si.id_product = p.id_product
                          AND (sw.word LIKE '10%')
                      ) position,
                          MAX(product_attribute_shop.`id_product_attribute`) id_product_attribute,
                          DATEDIFF(
                              p.`date_add`,
                              DATE_SUB(
                                  "2023-10-22 00:00:00",
                                  INTERVAL 20 DAY
                              )
                          ) > 0 new
                      FROM ?product p
                       INNER JOIN ?product_shop product_shop
                  ON(product_shop.id_product = p.id_product AND product_shop.id_shop = 1)
                      INNER JOIN `?product_lang` pl
                          ON(p.`id_product` = pl.`id_product`
                          AND pl.`id_lang` = 1 AND pl.id_shop = 1 )
                      
                      LEFT JOIN ?stock_available stock
                      ON(stock.id_product = p.id_product
                      AND stock.id_product_attribute = 0 
                      AND stock.id_shop = 1  
                      AND stock.id_shop_group = 0 )
                      LEFT JOIN `?manufacturer` m
                          ON(m.`id_manufacturer` = p.`id_manufacturer`)
                      LEFT JOIN `?image_shop` i
                          ON(i.`id_product` = p.`id_product`
                          AND i.cover = 1
                          AND i.id_shop = 1
                          AND i.id_lang IN(0, 1))
                      LEFT JOIN `?image_lang` il
                          ON(i.`id_image` = il.`id_image`
                          AND il.`id_lang` = 1)
                      WHERE p.`id_product` IN(45,46,50,51,132,133,198,199)
                      GROUP BY product_shop.id_product
                      ORDER BY  position desc
                      LIMIT 0,20
      
          DbCore->displayError in /classes/db/Db.php:450
          DbCore->query in /classes/db/Db.php:694
          DbCore->executeS in /classes/Search.php:564
          SearchCore::find in /controllers/front/SearchController.php:138
          SearchControllerCore->initContent in /classes/controller/Controller.php:213
          ControllerCore->run in /classes/Dispatcher.php:405
          DispatcherCore->dispatch in /index.php:28 
      

      La conf de mon module recherche est exclusivement sur les mots-clé ( aucun autre critère ). En remontant le fil , c'est la ligne 529

        MAX(product_attribute_shop.`id_product_attribute`) id_product_attribute,
      

      de Search.php qui lève ce warning. Je l'ai supprimé , cela corrige le warning mais dans mon cas , la table de la ligne en question est vide , c'est sans effet sur le résultat de la requête et donc je n'ai pas vraiment cherché à débugger la requête.

      cldt

      1 réponse Dernière réponse Répondre Citer 0
      • eoliaE Hors-ligne
        eolia
        dernière édition par

        Ce n'est pas normal car cette table a bien la colonne id_product_attribute:
        f8558a0d-d4a6-426f-bfaf-356142fb56bb-image.png

        Et sa structure lors de l'instal:
        195fb8e7-9028-4eb1-b060-0839b426ae7c-image.png

        Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

        1 réponse Dernière réponse Répondre Citer 0
        • E Hors-ligne
          esa
          dernière édition par

          c'est la ligne 539 ( pas 529 ) . En regardant de plus près la requête , je vois que la table product_attribute_shop n'est pas préfixée. Je vais faire quelques tests ce soir concernant ce warning en lançant cette requête directement dans dbeaver mais j'ai comme l'impression qu'il manque la jointure avec la table product .

          1 réponse Dernière réponse Répondre Citer 0
          • eoliaE Hors-ligne
            eolia
            dernière édition par

            Les déclinaisons sont désactivées dans votre boutique ?

            Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

            1 réponse Dernière réponse Répondre Citer 0
            • eoliaE Hors-ligne
              eolia
              dernière édition par

              Il manquait la condition dans ce cas. Le code corrigé:

                          $result = $db->executeS('
                              SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity,
                                  pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`,
                                  pl.`name`, MAX(i.`id_image`) id_image, il.`legend`, m.`name` manufacturer_name '.$score.'
                                  '.(Combination::isFeatureActive() ? ',
                                  MAX(product_attribute_shop.`id_product_attribute`) id_product_attribute' : '').',
                                  DATEDIFF(
                                      p.`date_add`,
                                      DATE_SUB(
                                          "'.date('Y-m-d').' 00:00:00",
                                          INTERVAL '._PS_NB_DAYS_NEW_PRODUCT_.' DAY
                                      )
                                  ) > 0 new'.(Combination::isFeatureActive() ? '
                                      , product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity,
                                      IFNULL(product_attribute_shop.`id_product_attribute`,0) id_product_attribute' : '').'
                              FROM '._DB_PREFIX_.'product p
                              '.Shop::addSqlAssociation('product', 'p').'
                              INNER JOIN `'._DB_PREFIX_.'product_lang` pl
                                  ON(p.`id_product` = pl.`id_product`
                                  AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').')
                              '.(Combination::isFeatureActive() ? '
                                  LEFT JOIN `'._DB_PREFIX_.'product_attribute_shop` product_attribute_shop
                                      ON(p.`id_product` = product_attribute_shop.`id_product`
                                      AND product_attribute_shop.`default_on` = 1
                                      AND product_attribute_shop.id_shop='.(int)$context->shop->id.')':'').'
                              '.Product::sqlStock('p', 0).'
                              LEFT JOIN `'._DB_PREFIX_.'manufacturer` m
                                  ON(m.`id_manufacturer` = p.`id_manufacturer`)
                              LEFT JOIN `'._DB_PREFIX_.'image_shop` i
                                  ON(i.`id_product` = p.`id_product`
                                  AND i.cover = 1
                                  AND i.id_shop = '.(int)$context->shop->id.'
                                  AND i.id_lang IN(0, '.(int)Context::getContext()->language->id.'))
                              LEFT JOIN `'._DB_PREFIX_.'image_lang` il
                                  ON(i.`id_image` = il.`id_image`
                                  AND il.`id_lang` = '.(int)$id_lang.')
                              WHERE p.`id_product` IN('.implode(',', $product_pool).')
                              GROUP BY product_shop.id_product
                              '.($order_by ? 'ORDER BY  '.$alias.$order_by : '').($order_way ? ' '.$order_way : '').'
                              LIMIT '.(int)(($page_number - 1) * $page_size).','.(int)$page_size
                          , true, false);
                      }
              

              Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

              1 réponse Dernière réponse Répondre Citer 0
              • E Hors-ligne
                esa
                dernière édition par

                Effectivement , je n'utilise pas les déclinaisons. Merci pour la correction .

                1 réponse Dernière réponse Répondre Citer 0
                • Premier message
                  Dernier message
                bug
                26 sujets
                1.6
                24 sujets
                front-office
                11 sujets
                1.5
                8 sujets
                1.7
                5 sujets
                système
                4 sujets
                administration
                3 sujets
                hack
                3 sujets
                module
                3 sujets
                performance
                3 sujets
                smtp
                3 sujets
                transporteurs
                3 sujets
                dashboard
                2 sujets
                https
                2 sujets
                paypal
                2 sujets
                promotions
                2 sujets