Laravel – Validando que un array anidado dentro de un Collection, contenga un string.

Las colecciones de laravel son muy útiles al momento de realizar operaciones sobre arrays.

A parte de que las respuestas dadas por Eloquent son instancias del objeto Collection, permitiendonos hacer uso de sus métodos.

Pero recientemente tuve un problema al momento de validar que una colección, con arrays anidados, contenga un string.

Probé con el método contains() pero solo funciona buscando en la raiz y no en arrays internos.

Como ejemplo tengo esta colección:

Al final lo realice de la siguiente manera:

collect(["city" => ['name' => 'Haiti', 'id' => 1],"hora" => 1, "fecha" => 2, "casa" => 3,"dia" => "hola"])

Y lo que dese saber es si contiene la palabra haiti incluso en los arrays anidadados dentro de la colección.

$search = 'haiti';

        $colect = collect(["city" => ['name' => 'Haiti', 'id' => 1],"hora" => 1, "fecha" => 2, "casa" => 3,"dia" => "hola"]);

        $col = $colect->filter(function( $v, $k ) use($search){
           if( is_array($v) ){
            foreach ( $v as $vl){
                //return false !== stristr( $vl, 're' );
                $resp = strpos( strtolower($vl),strtolower($search));
                if( $resp === FALSE ){
                    return false;
                } else {
                    return true;
                }
            }
           } else {
               //return false !== stristr( $v, 'a' );
               $resp = strpos( strtolower($v),strtolower($search));
               if( $resp === FALSE ){
                   return false;
               } else {
                   return true;
               }

           }
        });
        return response()->json($col->count());

Devuelve la cantidad de elementos que contiene la nueva colección generada.

Y así se puede validar que si es mayor a 1, contiene la palabra, de lo contrario no.

error platform PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)

Recientemente al lanzar una aplicación al Play Store que hace uso de la autenticación a través de Firebase. No funcionaba.

Bueno la opción que no me funcionaba era la de iniciar sesión con google, en las pruebas locales trabajo correctamente.

La manera de resolverlo fue agregar la integración con el Google Play, desde la consola del proyecto en Firebase.

Aquí les dejo la explicación en stack overflow:

https://stackoverflow.com/a/47620437

Laravel Eager Loading, validar que se cumpla una condición dentro de las relaciones de la consulta principal.

El uso de las consultas tipo «eager loading» en Laravel son muy útiles, ya que nos permite cargar las relaciones de nuestra consulta principal en un solo bloque de código.
Por ejemplo:
Realizaremos una consulta a la tabla solicitud y al mismo tiempo que nos devuelva los datos de la tabla usuario, categorias y subcategorias


Solicitud::with('users', 'categorias.subcategorias')->get();

Con esta línea de código obtendremos los datos que necesitamos.

¿Pero que ocurre si solo queremos las solicitudes que pertenezcan a la subcategoria Móvil de la categoría Aplicación?

Solo nos basta con hacer uso del método whereHas().


$search = 'Móvil';
Solicitud::with('users', 'categorias.subcategorias')
->whereHas('categorias.subcategorias', function($query) use($search){
$query->where('nombre', $search);
})->get();

Evitar cache del navegador en proyectos angular.

Al momento de desplegar nuestro proyecto angular en producción, nos encontraremos con que muchas veces el proyecto carga los datos de la memoria cache del navegador.
La solución nos lo brinda angular cli, con su comando –output-hashing.
Este comando define el modo hash en los nombres de archivos de salidas, para evitar que se recargue desde el navegador. Cada vez que se realiza un cambio, crea un nuevo hash.
Ejemplo:
ng build --prod --output-hashing

Call to undefined function utf8_decode() in

Si usas las funciones de PHP utf8_(en|de)code en versiones anteriores a 7.0 de PHP.

Solo debes instalar el paquete de php «php7.0-xml».
Ejemplo en servidor Ubuntu 16.04:

sudo apt-get install php7.0-xml

luego solo reiniciar apache2:

service apache2 restart

Aquí encontre la respuesta:

stackoverflow

Agregar un virtual host en apache

Un virtual host en apache, es utilizado para redireccionar los subdominios, por asi decirlo a una carpeta especifica que contendrá los archivos de aquel subdominio.

A continuación detallo como agregar un subdominio a un servidor Ubuntu, mediante un virtualhost.

  1. Agregar un record DNS tipo A, en el administrador que tengamos del dominio, por ejemplo: godaddy, hostgator, etc. El cual apuntará a la IP de nuestro servidor.
  2. Creamos una carpeta nueva en nuestro servidor, especificamente www, ejemplo: www/dominio.com.
  3. Dentro de la carpeta dominio.com crear un archivo index.html con cualquier contenido, ya que solo se usara a modo de prueba.

 

Consulta dinamica usando ‘IN’, SLQ – PHP.

A continuación les muestro como realize una especie de consulta dinamica, en PHP.

que necesitaba?

Como en toda aplicación muchas veces requerimos extraer cierta información de la base de datos, que lo más probable, este relacionado a otra tabla.

Pero supongamos el caso en el que los datos provienen de otra fuente y necesitamos extraer los datos, que esten ralcionados a ellos.

En el siguiente código la variable $usuarios,  contiene los datos externos.

$usuarios = array();
$query_prom = "SELECT * FROM $DB_TABLE WHERE COL IN (";
foreach ($usuarios as $u){
    $con ++;
    if($con < $len_usuarios){
        $query_prom.= "$u,";
    }else{
        $query_prom.= "$u";
    }
}

$query_prom.=")";