varios subconsultas registros hacer contar consultas como buscar anidadas orm laravel eloquent sql-like

orm - registros - subconsultas eloquent laravel



Usar Eloquent ORM en Laravel para realizar búsquedas en bases de datos usando LIKE (5)

Quiero usar la creación de registros activos de Eloquent para crear una consulta de búsqueda, pero va a ser una búsqueda LIKE. He encontrado User::find($term) o User::find(1) , pero esto no está generando una declaración similar. No estoy buscando una respuesta directa, pero si alguien pudiera al menos darme una dirección para mirar eso sería genial.


FYI, la lista de operadores (que contiene like y todos los demás) está en el código:

/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php protected $operators = array( ''='', ''<'', ''>'', ''<='', ''>='', ''<>'', ''!='', ''like'', ''not like'', ''between'', ''ilike'', ''&'', ''|'', ''^'', ''<<'', ''>>'', ''rlike'', ''regexp'', ''not regexp'', );

renuncia:

La respuesta de Joel Larson es correcta. Tengo mi voto popular.

Espero que esta respuesta arroje más luz sobre lo que está disponible a través del ORM Eloquent ( señala a las personas en la derecha directa ). Si bien un enlace a la documentación sería mucho mejor, ese enlace ha demostrado ser difícil de alcanzar.


Puede hacer búsquedas de bases de datos usando LIKE con esta sintaxis:

Model::where(''column'', ''LIKE'', ''%value%'')->get();


Si necesita usar LIKE con frecuencia, puede simplificar un poco el problema. Se puede crear un método personalizado como () en el modelo que hereda el ORM Eloquent:

public function scopeLike($query, $field, $value){ return $query->where($field, ''LIKE'', "%$value%"); }

Entonces puedes usar este método de tal manera:

User::like(''name'', ''Tomas'')->get();


Si no te gustan las comillas dobles como yo, esto funcionará para ti con comillas simples:

$value = Input::get(''q''); $books = Book::where(''name'', ''LIKE'', ''%'' . $value . ''%'')->limit(25)->get(); return view(''pages/search/index'', compact(''books''));


Use comillas dobles en lugar de comillas simples, por ejemplo:

where(''customer.name'', ''LIKE'', "%$findcustomer%")

A continuación está mi código:

public function searchCustomer($findcustomer) { $customer = DB::table(''customer'') ->where(''customer.name'', ''LIKE'', "%$findcustomer%") ->orWhere(''customer.phone'', ''LIKE'', "%$findcustomer%") ->get(); return View::make("your view here"); }