floriqn Posted June 2, 2020 Share Posted June 2, 2020 (edited) Hello, I'm trying to update the ps_product table and more precisely cache_has_attachements (set to 1 ) to display the attached document. This function is in AdminImportController.php. In my function in the php file : ... Db::getInstance()->execute(' UPDATE `'._DB_PREFIX_.'product` SET `cache_has_attachments` = 1 '); ... But it doesn't work. It works when i write the command in MySQL : UPDATE ps_product SET cache_has_attachments = 1 Someone would have any idea ? PrestaShop : 1.7.6.5 Edited June 16, 2020 by floriqn (see edit history) Link to comment Share on other sites More sharing options...
Guest Posted June 3, 2020 Share Posted June 3, 2020 And how do you know that a query to the database will run in your function? The problem cannot be identified from this part of the code. Link to comment Share on other sites More sharing options...
floriqn Posted June 3, 2020 Author Share Posted June 3, 2020 2 hours ago, Guest said: And how do you know that a query to the database will run in your function? The problem cannot be identified from this part of the code. Hello Guest, Precisely I do not know how to test it. In the same function I have another request that works. The code : $attachments = get_object_vars($product); if (isset($attachments['attachment']) && !empty($attachments['attachment'])) foreach (explode($this->multiple_value_separator, $attachments['attachment']) as $single_attachment){ $tab_attachment = explode('|', $single_attachment); $attachment_filename = isset($tab_attachment[0]) ? $tab_attachment[0] : ''; $attachment_name = isset($tab_attachment[1]) ? trim($tab_attachment[1]) : $attachment_filename ; $attachment_description = isset($tab_attachment[2]) ? trim($tab_attachment[2]) : ''; if(!empty($attachment_filename)) { $id_attachment = (int)Attachment::addAttachmentImport($attachment_filename, $attachment_name, $attachment_description); if (isset($attachments['attachment_id_nums']) && !empty($attachments['attachment_id_nums'])) { $tab_attachment_id_nums = explode(',',$attachments['attachment_id_nums']); foreach ($tab_attachment_id_nums as $id_product) { Attachment::addAttachmentProductImport($id_product, $id_attachment); Db::getInstance()->execute(' UPDATE `' . _DB_PREFIX_ . 'product` SET `cache_has_attachments` = 1 '); } } } } Everything works except : Db::getInstance()->execute(' UPDATE `' . _DB_PREFIX_ . 'product` SET `cache_has_attachments` = 1 '); Link to comment Share on other sites More sharing options...
Guest Posted June 9, 2020 Share Posted June 9, 2020 And did you try to add it to the default value? Link to comment Share on other sites More sharing options...
Chill_user Posted June 9, 2020 Share Posted June 9, 2020 1.It's maybe stupid, but try to add WHERE params. Db::getInstance()->execute(' UPDATE `' . _DB_PREFIX_ . 'product` SET `cache_has_attachments` = 1 WHERE `id_product` = $id_product'); 2. You can also try next step: $query = (' UPDATE `' . _DB_PREFIX_ . 'product` SET `cache_has_attachments` = 1 '); dump($query); exit(); Than copy/paste the $query values to the sql command prompt and check the errors. 3. Try the ExecuteS instead of Execute Link to comment Share on other sites More sharing options...
floriqn Posted June 16, 2020 Author Share Posted June 16, 2020 On 6/9/2020 at 8:04 AM, Guest said: And did you try to add it to the default value? Hi D.Tengler, Please excuse my late reply but I found a similar solution that works perfectly. Link to comment Share on other sites More sharing options...
floriqn Posted June 16, 2020 Author Share Posted June 16, 2020 On 6/9/2020 at 10:27 AM, Amantha Bill said: 1.It's maybe stupid, but try to add WHERE params. Db::getInstance()->execute(' UPDATE `' . _DB_PREFIX_ . 'product` SET `cache_has_attachments` = 1 WHERE `id_product` = $id_product'); 2. You can also try next step: $query = (' UPDATE `' . _DB_PREFIX_ . 'product` SET `cache_has_attachments` = 1 '); dump($query); exit(); Than copy/paste the $query values to the sql command prompt and check the errors. 3. Try the ExecuteS instead of Execute Hi Amanda As for D.Tengler, please excuse my late reply but I found a similar solution that works perfectly. But I keep your solution for another project. Thanks. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now