tengo el siguiente código
public function detailCustomer(Customer $customer) { $vehicles = DB::table('vehicles') ->selectRaw('*') ->where('cust_id', '=', $customer->id); return view('customers.detail', array('customer' => $customer, 'vehicles' => $vehicles)); } Donde la tabla de vehicles consta de:
spz cust_id <FK> //this is foreign key to customer->id type brand En la vista de detalles de customers.detail , intenté usar el siguiente código para mostrar datos, pero aparece este error:
Undefined property: Illuminate\Database\PostgresConnection::$spz
Código:
@if (count($vehicles) > 0) <?php $i = 1; ?> @foreach ($vehicles as $vehicle) <?php $i++; ?> <td>{{$vehicle->spz}}</td> <td>{{$vehicle->type}}</td> <td>{{$vehicle->brand}}</td> @endforeach @endif He leído este tema , pero parece que no es mi problema porque uso foreach para iterar a través del objeto, pero parece que no obtengo el objeto de la base de datos en mi variable $vehicles , porque en la página de error, también muestra algo como esto:
'customer' => object(Customer), 'vehicles' => object(Builder) ¿Qué me hace pensar que customer obtiene su objeto correctamente, pero vehicles obtienen el Builder ? Realmente no tengo idea de lo que está mal allí. ¿Algunas ideas? Solo para describir lo que estoy haciendo en el proyecto en el que trabajo, tengo una página de detalles del cliente donde hago clic en un botón para agregar un vehículo a su página de detalles (página de perfil) y envío la id del cliente como parámetro a la función donde agregue el vehículo a la base de datos, que funciona (el vehículo se agrega correctamente con la id del cliente). Ahora ese problema aparece cuando quiero mostrar la página de detalles con información del vehículo como muestra el código anterior. Espero que sea lo suficientemente claro. Gracias por las sugerencias.
Intente agregar ->get() o ->paginate($YOUR_LIMIT_ONE_PAGE) en su Controlador
public function detailCustomer(Customer $customer) { $vehicles = DB::table('vehicles') ->selectRaw('*') ->where('cust_id', '=', $customer->id)->get(); // ->where('cust_id', '=', $customer->id)->paginate($YOUR_LIMIT_ONE_PAGE); return view('customers.detail', array('customer' => $customer, 'vehicles' => $vehicles)); } Y trata de reemplazar tu foreach por este forelse
@forelse ($vehicles as $index => $vehicle) <tr> <td>{{$index}}</td> <td>{{($vehicle->spz !== null) ? $vehicle->spz : '-'}}</td> <td>{{($vehicle->type !== null) ? $vehicle->type : '-'}}</td> <td>{{($vehicle->brand !== null) ? $vehicle->brand : '-'}}</td> </tr> @empty <td colspan='4'>Data not found</td> @endforelse