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

Jäger
quelle

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
    }
}
MageWorx
quelle
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.

InfoBeans
quelle
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