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.

Intento leer la propiedad “xxx” en nulo.

He creado una base de datos y un modelo según varias instrucciones para relaciones muchos a muchos pero aún hay un error.

Modelo Divisi:

public function status()
{
    return $this->belongsToMany('App\Models\Status','id_status','id');
}

Modelo Status:

public function divisi()
{
    return $this->belongsToMany('App\Models\Divisi','id_divisi','id');
}

Vista blade:

<tr>
    <td><a href="{{ route('pengajuan.show',['pengajuan' => $pengajuan->id]) }}">{{$pengajuan->nama_project}}</a></td>
    <td>{{$pengajuan->divisis->nama_divisi}}</td>
    <td>{{$pengajuan->created_at}}</td>
    <td>{{$pengajuan->tanggal_pengajuan}}</td>
    <td>{{$pengajuan->total}}</td>
    <td>{{$pengajuan->statuses->nama_status}}</td>
    <td>{{$pengajuan->keterangan}}</td>
</tr>

la página de error

mi ERD

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Basándonos en el código y en la página de error proporcionada, parece haber un problema con la sintaxis utilizada en los modelos Divisi y Status para definir la relación muchos a muchos.

    En el modelo Divisi, el método belongsToMany debería especificar el nombre de la tabla pivot como segundo parámetro, seguido de la clave foránea que hace referencia al modelo actual (divisis) y luego la clave foránea que hace referencia al modelo relacionado (statuses). Esto se vería algo así:

    public function statuses()
    {
        return $this->belongsToMany('App\Models\Status', 'divisi_status', 'id_divisi', 'id_status');
    }
    

    De manera similar, en el modelo Status, el método belongsToMany debe especificar el nombre de la tabla pivot, la clave foránea que hace referencia al modelo actual (statuses) y la clave foránea que hace referencia al modelo relacionado (divisis). Esto se vería algo así:

    public function divisis()
    {
        return $this->belongsToMany('App\Models\Divisi', 'divisi_status', 'id_status', 'id_divisi');
    }
    

    Ten en cuenta que en ambos casos, el nombre del método y el orden de los parámetros coincide con el nombre y el orden utilizados en la vista blade (divisis y statuses).

    Una vez que hayas actualizado los modelos, es posible que también necesites actualizar cualquier consulta o relación en tu aplicación que haga referencia a estos modelos para utilizar los nuevos nombres de método.

    Además, es posible que existan otros problemas en tu código o configuración que estén causando el error. Puede ser útil revisar la documentación de Laravel sobre relaciones muchos a muchos, así como otros recursos relevantes, para asegurarse de que tu código siga las mejores prácticas y que tu configuración esté correctamente establecida.

Comments are closed.