Aktualisieren Sie benutzerdefinierte Spaltendaten in der Angebotstabelle Magento 2


7

Ich habe eine benutzerdefinierte Spalte in die Anführungszeichen-Tabelle wie folgt eingefügt:

if (version_compare($context->getVersion(), '1.0.1', '<')) {
          $setup->getConnection()->addColumn(
              $setup->getTable('quote'),
              'custom_column',
              [
                  'type' => \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
                  'nullable' => true,
                  'comment' => 'Custom Column',
             ]
          );
        }

Die benutzerdefinierte Spalte wurde erfolgreich erstellt und zu jeder einzelnen Zeile in der Anführungszeichen-Tabelle mit dem Wert Null hinzugefügt. Das Problem ist jedoch, dass ich nicht weiß, wie die benutzerdefinierten Spaltendaten in der Anführungszeichen-Tabelle nur mit der Anführungszeichen-ID aktualisiert werden sollen

Antworten:


5

Der einfachste Weg, dies zu lösen, besteht darin, dieses Feld im Angebotsmodell auszufüllen und im Repository zu speichern:

class QuoteUpdater
{
    /**
     * @var \Magento\Quote\Model\QuoteRepository
     */
    protected $quoteRepository;

    /**
     * @param \Magento\Quote\Model\QuoteRepository $quoteRepository
     */
    public function __construct(
        \Magento\Quote\Model\QuoteRepository $quoteRepository
    ) {
        $this->quoteRepository = $quoteRepository;
    }

    public function updateQuoteData($quoteId, int $customData)
    {
        $quote = $this->quoteRepository->get($quoteId); // Get quote by id
        $quote->setData('custom_column', $customData); // Fill data
        $this->quoteRepository->save($quote); // Save quote
    }
}

Wie erhalte ich die $ customData in diesem Repository, wenn es sich um ein Formularfeld in addtocart.phtml handelt?
Swetha

Job mit Servicevertrag erstellen!
HaFiz Umer

2

Verwenden Sie den folgenden Code, um Daten in der Angebotstabelle festzulegen:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$quoteId = 10;
$customColumnValue = 1; 
$quote = $objectManager->create('Magento\Quote\Model\Quote')->load($quoteId);
$quote->setCustomColumn($customColumnValue);
$quote->save();

Ersetzen Sie hier die Variable $ quoteId durch Ihre Angebots-ID.


1
Sie sollten den
ObjectManager

1
Ja, dies ist nur ein Beispiel. Wir sollten den Objektmanager zuerst in den Konstruktor injizieren und dann sein Objekt in der Methode verwenden. 1. Objekt deklarieren: private $ _objectManager; 2. In den Konstruktor einfügen und initialisieren: public function __construct (\ Magento \ Framework \ ObjectManagerInterface $ objectmanager) {$ this -> _ objectManager = $ objectmanager; }
InfoBeans

Es sei denn, es ist in einem Plugin ..
DWils
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.