Pregunta:
Fecha: 08-04-2015 14:30:06
(En Español)
Me explico yo enviandole solamente el table_name de cualquiera de mis tablas de mi DB me construya un array con el resultado [nameColumn] => '$valueColumn'.
Este es mi codigo
Gracias , les agradecería su ayuda bastante. Votos: 0 - Respuestas: 2 - Vistas: 16 Compartir en: Google Facebook Twitter LinkedIn Link
¿Cómo hacer un select from a mysql parametrizable?[Resuelta]
Hola comunidad , con una duda quiero hacer un select from parametrizable.Me explico yo enviandole solamente el table_name de cualquiera de mis tablas de mi DB me construya un array con el resultado [nameColumn] => '$valueColumn'.
Este es mi codigo
static function select($table, $columns, $columnWhere, $valueWhere) {
//Construye el query
if($columnWhere == "*" && $valueWhere == "*"){
$qrySelect = "SELECT ".$columns." FROM ".$table;
}else{
$qrySelect = "SELECT ".$columns." FROM ".$table." WHERE ".$columnWhere." = '".$valueWhere."'";
}
//Ejecuta el query
$resultadoSelect = serviceweb::obtenerQuery($qrySelect);
//Agrega el resultado a un array
if(mysql_num_rows($resultadoSelect) != 0){
while ($fila = mysql_fetch_assoc($resultadoSelect)) {
//TODO:Aqui construyo un array , pero no se como hacer que baya agregando los nombres de las columnas
//automaticamente xq ahora solo estoy agregando el id y nombre como se podran dar cuenta.
$arrayResultados[] = array(
'Id' => $fila['id'],
'Nombre' => $fila['nombre']);
}
}
$resultado = json_encode($arrayResultados);
echo $resultado;
}
Gracias , les agradecería su ayuda bastante. Votos: 0 - Respuestas: 2 - Vistas: 16 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 09-04-2015 07:22:59 Yo lo que hago es separar la lógica en dos partes, una para construcción del query y otra para la extracción de datos..
por ejemplo de un formulario que tiene 3 campos, digamos Search(text), from(date), to(date)
Creo un modelo con los métodos necesarios para generar el query...
(estoy usando laravel, con eloquent)
<?php namespace App\Models; use Eloquent; use DB; class Orders extends Eloquent { protected $connection = 'sqlsrv'; protected $table = 'Orders'; public static function getOrders($data=array()){ $order = new Orders; $query = DB::connection($order->connection) ->table($order->table) ->select('OrderNumber' ,'SourceOrderNumber' ,'PONumber' ,DB::raw('CAST(OrderDate as date) AS OrderDate') ,'OrderStatus' ,'CustomerID' ,'CartID' ,'Shipping' ,'ShipName' ,DB::raw('[Inventory].[dbo].fn_WebOrder_LabelStatus(SourceOrderNumber) as LabelStatus') ,DB::raw('[Inventory].[dbo].fn_WebOrder_CancelRequest(SourceOrderNumber) as CancelRequest') ,'OrderInst' ); return $query; } public static function getBetweenDates($query, $data){ $from = (!empty($data['from'])) ? $data['from'] : date("m/d/Y", strtotime("yesterday")); $to = (!empty($data['to'])) ? $data['to'] : date("m/d/Y"); return $query->whereBetween('OrderDate',array($from, $to)); } public static function getSearch($query, $data, $fields){ $search = $data['search']; if (!empty($search)){ $query->where(function($query) use ($search, $fields) { foreach ($fields as $field) { $query->orWhere($field, 'LIKE', "%".$search."%"); } }); } return $query; } }
Si observas, cada método genera un agregado al query.
Ahora desde el controlador podemos empezar a llamara a los metodos y generar el query, dependiendo de lo que tengamos en el formulario de búsqueda el cual es pasado serializado al controlador
public function getGrid() { $page = Input::get('page'); $limit = Input::get('rows'); $sidx = Input::get('sidx'); $sord = Input::get('sord'); //Separamos los datos que vienen serializados en desde el formulario parse_str(Input::get('data'), $data); //Creamos un arreglo con los campos donde buscaremos si el campo Search tiene algo. $fieldSearch= array('OrderNumber','SourceOrderNumber','PONumber','OrderStatus','CustomerID','CartID','Shipping','ShipName'); //Comenzamos a construir el query $orders = Orders::getOrders(); $orders = Orders::getBetweenDates($orders,$data); $orders = Orders::getSearch($orders,$data,$fieldSearch); $count = $orders->count(); //Realizamos una serie de calculos para el grid $totalPages = GridExtraData::totalPages($count,$limit); $page = GridExtraData::page($page,$totalPages); $start = GridExtraData::start($limit,$page); //Extraemos los datos $orders = $orders->skip($start)->take($limit)->get(); //enviamos los datos a la vista.. return Response::json(array('page' => $page,'total' => $totalPages, 'records' => $count,'rows'=>$orders)); }
Y de esta forma tenemos un consulta parametrizada, totalmente funcional, que permite filtrar por rango de fechas, y busca en varios campos a la vez lo que se escriba en el campo de Search..
Saludos espero te ayude... Votos: 2 - Link respuesta -
Fecha: 09-04-2015 08:31:16 Gracias, vos buena onda si me diste una idea de como hacerlo gracias :D Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
