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