Cómo obtener mis datos de tabla personalizados de magento 2

8

He creado una nueva tabla usando un módulo personalizado y un valor almacenado para esta tabla, ahora, necesito obtener datos de la tabla en el archivo php de la base de datos en magento 2, ¿cómo lograr esto?

TableName="email_format" columns="customerid"y "format"ahora, necesito recuperar la identificación del cliente y el valor del formato de la tabla.

Gracias,

Rajkumar .E
fuente

Respuestas:

15

1) Supongo que ha creado el archivo Modelo y Colección asociado con esas tablas.

2) En un constructor de archivos PHP de bloques, agregue un argumento (Inyección de dependencias) como se muestra a continuación y guárdelo en una variable miembro de la clase.

 public function __construct(
    Context $context,
    \Namespace\Modulename\Model\ModelNameFactory $modelNameFactory,

    array $data = array()
) {
    $this->_modelFactory = $modelFactory;
    parent::__construct($context, $data);
}

3) Prepare un método público en su bloque para acceder a la colección como se muestra a continuación.

public function getCollection(){

    return $this->_modelFactory->create()->getCollection();

}

4) Recorre cada uno de los resultados de la colección.

Espero que esto te ayudará.

Codrain Technolabs Pvt Ltd
fuente
¿Podemos inyectar \ Namespace \ Modulename \ Model \ ResourceModel \ ModelName \ Collection directamente en el constructor?
Mehdi
10

Puede obtener una tabla personalizada directamente utilizando el concepto objectmanager,

    $objectManager =   \Magento\Framework\App\ObjectManager::getInstance();
    $connection = $objectManager->get('Magento\Framework\App\ResourceConnection')->getConnection('\Magento\Framework\App\ResourceConnection::DEFAULT_CONNECTION'); 
    $result1 = $connection->fetchAll("SELECT * FROM email_format");

echo "<pre>";print_r($result1);

O

Esta es la forma correcta de usar el bloque:

public function __construct(
    Context $context,
    \Namespace\Module\Model\ModuleFactory $modelFactory,

    array $data = array()
) {
    $this->_modelFactory = $modelFactory;
    parent::__construct($context, $data);
}

Puede obtener la colección por métodos de fábrica:

public function getCollection(){

    return $this->_modelFactory->create()->getCollection();

}
Rakesh Jesadiya
fuente
66
Esta no es la forma correcta
Codrain Technolabs Pvt Ltd
11
Usar el administrador de objetos directamente definitivamente no es la forma más elegante de hacerlo. Intente apegarse a la inyección de dependencia
Raphael en Digital Pianism