Objeto vacío en Eloquent perteneceA()
Estoy intentando mostrar qué atributo (code
) tiene el Item. ServiceItem tiene Item como clave externa. Pero no puedo conseguir en absoluto el Item.
Esto da un objeto vacío en la plantilla blade:
@foreach ($service->serviceItems as $serviceItem )
{{ json_encode($serviceItem->item()) }}
@endforeach
Aquí está mi declaración de modelo:
“`
//Modelo ServiceItem
class ServiceItem extends Model
{
use HasFactory;
public $fillable = [‘service_id’, ‘item_id’, ‘values’];
public function service()
{
return $this->belongsTo(Service::class, 'foreign_key');
}
//esto no funciona
public function item()
{
return $this->belongsTo(Item::class, 'foreign_key');
}
}
//Modelo Service
class Service extends Model
{
use HasFactory;
public $fillable = [‘user_id’, ‘site_id’, ‘title’, ‘status’, ‘remarks’, ‘report’, ‘date’];
public function user()
{
return $this->belongsTo('\App\Models\User');
}
public function site()
{
return $this->belongsTo('\App\Models\Site');
}
public function serviceItems()
{
return $this->hasMany('\App\Models\ServiceItem');
}
}
Este es mi controlador:
public function index()
{
$services = Service::latest()->paginate(5);
return view(‘services.index’, compact(‘services’))
->with(‘i’, (request()->input(‘page’, 1) – 1) * 5);
}
Por favor, ¡ayúdame a mostrar el atributo code
en Item de Service! ¡Muchas gracias!
davy.ai
Para mostrar el atributo
code
del modeloItem
, debes modificar el métodoitem()
en tu modeloServiceItem
especificando la clave foránea y la clave local. Así es como puedes modificar el métodoitem()
:Esto asegurará que el modelo
Item
esté correctamente vinculado con la clave foráneaitem_id
del modeloServiceItem
.Luego, en tu template blade, podrás acceder al atributo
code
del modelo relacionadoItem
de la siguiente manera:Esto debería mostrar el atributo
code
del modeloItem
relacionado para cadaServiceItem
en tu loop.