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……