/ / Pasar el valor del objeto y luego buscar contra ese objeto: laravel, laravel-5, elocuente, solicitud, generador de consultas

Transmitir el valor del objeto y luego buscar en ese objeto: laravel, laravel-5, elocuente, solicitud, generador de consultas

Tengo una búsqueda en funcionamiento que encuentra usuarios cuyoslas preferencias coinciden con la propiedad del propietario. Todo esto está muy bien, pero quiero que el propietario pueda seleccionar una propiedad, luego presione buscar y pase ese objeto de propiedad para compararlo.

Esta es una imagen de la búsqueda

Captura de pantalla

Cualquiera que sea la propiedad que se elija de la lista se utilizará para realizar la búsqueda en la búsqueda.

Esta es la vista de la búsqueda

<div class="row">
<div class="col-md-10">
<select class="form-control" id="property_address" name="property_address">
<!--Gets all counties from DB -->
@foreach ($properties as $property)
<option value="{{$property->address . ", " . $property->town . ", " . $property->county}}">{{$property->address . ", " . $property->town . ", " . $property->county}}</option>
@endforeach
</select>
</div> <!-- ./ col-6-->
</div> <!-- ./ row-5  -->

<div class="row mt-md-4">
<div class="col-md-4">
<button type="submit" class="form-control btn btn-primary">
Search
</button>
</div>
</div>

Este es el controlador

La primera parte muestra el formulario de búsqueda.

public function searchhome(){
//Search Filter UI
//Populates fields.
$user = Auth::user();
$properties = PropertyAdvert::where("user_id", Auth::id())->get();
return view("pages/account/search/index", compact("user", "properties"));}

Lo siguiente es la lógica

public function searchresults(Request $request){

//Gets all users that are tenants
$tenants = User::where("userType", "tenant")->first();

//Gets all preferances
$Prefereances = TenantPreferance::all()->first();
//Gets the prefereances that match a tenant id
$pref = $Prefereances::where("user_id", $tenants->id)->first();

//Gets the current signed in users property

//Attempting to get value of property by name
$property = $request->property_address;

$result = $pref
->where("county" , $property->county)
->where("type" , $property->type)
->where("rent", "<=", $property->rent)
->where("bedrooms", "<=", $property->bedrooms)
->where("bathrooms", "<=", $property->bathrooms);

$users = $result->get();

return view("pages/account/search/results", compact("users"));
}

Intenté usar el objeto de solicitud para establecer la propiedad seleccionada como la que se está comparando.

¿Algunas ideas?

Respuestas

0 para la respuesta № 1

En lugar de rellenar el valor de selección con la dirección, rellénelo con el ID de la propiedad, luego obtenga esa propiedad de la base de datos mediante el ID transmitido desde la selección.

$property = Property::find($request->property_id);


$result = $pref
->where("county" , $property->county)
->where("type" , $property->type)
->where("rent", "<=", $property->rent)
->where("bedrooms", "<=", $property->bedrooms)
->where("bathrooms", "<=", $property->bathrooms);

$users = $result->get();