Actualmente, mi archivo de Excel se está creando mostrando todos los registros en DB. El problema es que también muestra los elementos eliminados.

Aquí está el código que tengo para mi archivo de Excel actual:

public function collection()
{
    $resultados = collect( DB::select('SELECT
articulos.id,
articulos.codigo_comercial,
articulos.codigo_interno,
articulos.descripcion,
coalesce( articulos.marca, \'SIN MARCA\' ) as marca,
coalesce( articulos.modelo, \'SIN MODELO\' ) as modelo,
coalesce( articulos.categoria,\'SIN CATEGORIA\' ) as categoria,
if( articulos.subcategoria = \'null\', \'SIN CATEGORIA\', coalesce( articulos.subcategoria, \'SIN CATEGORIA\' ) ) as subcategoria,
(SELECT existencia FROM costo_promedio_historico WHERE costo_promedio_historico.articulo_id = articulos.id ORDER BY created_at DESC LIMIT 1) as existencia,
articulos.unidad_medida,
articulos.codigo_producto_sat,
articulos.codigo_unidad_sat,
CASE
    WHEN JSON_EXTRACT( articulos.impuestos_compra, "$[0]" ) = "EXENTO" THEN \'EXENTO 0%\'
    WHEN JSON_EXTRACT( articulos.impuestos_compra, "$[0]" ) = "IVA" THEN \'IVA 16%\'
    ELSE \'SIN IMPUESTOS CONFIGURADOS\'
END as impuestos_compra,
CASE
    WHEN JSON_EXTRACT( articulos.impuestos_venta, "$[0]" ) = "EXENTO" THEN \'EXENTO 0%\'
    WHEN JSON_EXTRACT( articulos.impuestos_venta, "$[0]" ) = "IVA" THEN \'IVA 16%\'
    ELSE \'SIN IMPUESTOS CONFIGURADOS\'
END as impuestos_venta,
FORMAT( ( SELECT listas_precios_articulos.costo_compra FROM listas_precios_articulos WHERE listas_precios_articulos.articulo_id = articulos.id ORDER BY listas_precios_articulos.created_at DESC LIMIT 1 ), 2 ) as costo_compra,
( SELECT listas_precios_articulos.tipo_utilidad FROM listas_precios_articulos WHERE listas_precios_articulos.articulo_id = articulos.id ORDER BY listas_precios_articulos.created_at DESC LIMIT 1 ) as tipo_utilidad,
FORMAT( ( SELECT listas_precios_articulos.porcentaje FROM listas_precios_articulos WHERE listas_precios_articulos.articulo_id = articulos.id ORDER BY listas_precios_articulos.created_at DESC LIMIT 1 ) ,2) as porcentaje,
FORMAT( ( SELECT listas_precios_articulos.precio_venta FROM listas_precios_articulos WHERE listas_precios_articulos.articulo_id = articulos.id ORDER BY listas_precios_articulos.created_at DESC LIMIT 1 ), 2 ) as precio_venta,
FORMAT( ( SELECT listas_precios_articulos.utilidad FROM listas_precios_articulos WHERE listas_precios_articulos.articulo_id = articulos.id ORDER BY listas_precios_articulos.created_at DESC LIMIT 1 ), 2 ) as utilidad FROM articulos')
    );

    return $resultados;
}

Si escribo esto justo después de FROM articulos, se crea Excel pero está vacío:

WHERE articulos.deleted_at = NULL

¿Cómo puedo evitar todos mis elementos eliminados?

Quiero que mi salida muestre solo resultados cuando deleted_at == NULL

Saludos.

0
Rodri6uez 22 ene. 2021 a las 21:56

1 respuesta

La mejor respuesta

En MySQL, ... = NULL siempre devuelve NULL. Utilice la palabra clave IS / IS NOT:

WHERE articulos.deleted_at IS NULL
2
DuDa 22 ene. 2021 a las 22:06