Ich habe eine neue Tabelle in Magento2 erstellt: my_custom_table
mit 4 Feldern:
id: primary key,
product_id: int(11),
customer_id: int(11)
status:int(11)
Ich möchte mehrere Datensätze gleichzeitig speichern. Hier ist mein Code.
namespace Company\Module\Controller\Adminhtml\Index;
class Save extends \Company\Module\Controller\Adminhtml\Index
{
protected $_filterProvider;
protected $productModel;
public function __construct(
\Magento\Backend\App\Action\Context $context,
\Magento\Framework\Registry $registry,
\Magento\Cms\Model\Template\FilterProvider $filterProvider,
\Company\Module\Model\Product $productModel
) {
$this->_filterProvider = $filterProvider;
$this->productModel = $productModel;
parent::__construct($context,$registry);
}
public function execute()
{
$resultRedirect = $this->resultRedirectFactory->create();
$data = $this->getRequest()->getPostValue();
if ($data) {
$products = array(12,13,14,14);
$customerId = 1;
foreach($products as $pdt){
$productModel = $this->productModel;
$productModel->setData('product_id',$pdt);
$productModel->setData('customer_id',$customerId);
$productModel->setData('product_status',1);
$productModel->save();
}
}
return $resultRedirect->setPath('*/*/new');
}
}
Bitte hilf mir
Antworten:
Wir haben vergessen, das Datenmodell nach dem Speichern zu deaktivieren .
[BEARBEITEN]
Die Verwendung von model Factory kann unser Problem lösen. Zum Beispiel
Company\Module\Model\ProductFactory
in Konstruktor injizieren . Innerhalb der Schleife müssen wir nur die Fabrik erstellen.quelle