Crear prefijos a tabla y usarlos en consultas

Crear prefijos a tablas y usarlos en consultas, es algo perfectamente posible de hacer en Laravel

Podemos  crear un  prefijo a todas las tablas de nuestra Base de Datos,  basta con ir al archivo  config/database.php, y en la opción prefix, y añadir el que queremos usar

'mysql' => [
    'driver'    => 'mysql',
    'host'      => env('DB_HOST', 'localhost'),
    'database'  => env('DB_DATABASE', 'database'),
    'username'  => env('DB_USERNAME', 'root'),
    'password'  => env('DB_PASSWORD', ''),
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => 'prefijo_',
    'strict'    => false,
    'options' => array(),
],

En el caso de que realicemos consultas puras o  del tipo DB::raw tendremos que recordarle a Laravel el prefijo que usamos.

Leer otro articulo de Laravel
Primero  obtenemos el prefijo.

$db_prefix = DB::getTablePrefix();

Ahora dentro de la función DB::raw ingresamos el prefijo 

$productos = App\Producto::join("tipos","productos.tipos_id","=","tipos.id")
  ->leftJoin(DB::raw("(SELECT * FROM {$db_prefix}materials where {$db_prefix}materials.estado=1) as materials"),
    function($join){
      $join->on('productos.id','=','materials.productos_id');
    }
  )
  ->select(DB::raw("{$db_prefix}productos.*"))
  ->addSelect(DB::raw("DATE_FORMAT({$db_prefix}materials.created_at,'%d/%m/%Y %h:%i %p') AS materials_creado"))
  ->where('productos.estado','=',1)
  ->where('materials.pruebas_count','>',0)
  ->whereRaw(DB::raw("{$db_prefix}materials.etiquetas !=''"))
  ->get();
 $sql = "SELECT * FROM {$db_prefix}productos WHERE {$db_prefix}productos.estado = ? AND {$db_prefix}productos.fecha_caducidad < ?";
DB::select($sql,array(1,20));

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

….un sueño es casi todo  y más que  nada, más que todo al soñarlo, casi nada después……

Translate »