es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para mostrar el atributo code del modelo Item, debes modificar el método item() en tu modelo ServiceItem especificando la clave foránea y la clave local. Así es como puedes modificar el método item():

    public function item()
    {
        return $this->belongsTo(Item::class, 'item_id', 'id');
    }
    

    Esto asegurará que el modelo Item esté correctamente vinculado con la clave foránea item_id del modelo ServiceItem.

    Luego, en tu template blade, podrás acceder al atributo code del modelo relacionado Item de la siguiente manera:

    @foreach ($service->serviceItems as $serviceItem)
        {{ $serviceItem->item->code }}
    @endforeach
    

    Esto debería mostrar el atributo code del modelo Item relacionado para cada ServiceItem en tu loop.

Comments are closed.