Relaciones en laravel

Buenas, танго una перспектива надело recibo una "идентификатор de asignatura", "идентификатор de alumno" y quiero mostrar las calificaciones que tenga ESE alumno en ESA ASIGNATURA.

танго la siguiente funcion

 public function verCalificacion($id, $idasi)
{
    $alumno = Alumno::find($id);
    $asignatura = Asignatura::find($idasi); 
    $mis_notas = $alumno->calificaciones; // ????

    return view('datos-profesor.vercalificacion')->with('alumno',$alumno)->with('mis_notas',$mis_notas)->with('asignatura',$asignatura);
}

надетый recibo las ids correspondientes, pero нос Комо usar la relacion para que me devuelva las calificaciones de un alumno en una asignatura, танго en la tabla Calificaciones de la base de datos las идентификаторы foraneas correspondientes y estas сын las relaciones

Calificacion

public function alumno()
{ 
    return $this->belongsTo(Alumno::class, 'id_alumno', 'id');
}


public function asignatura()
{
    return $this->belongsTo(Asignatura::class, 'id_asignatura', 'id');
}

Alumno

public function calificaciones()
{
    return $this->hasMany('App\Calificacion','id_alumno');
}

Asignatura

public function calificaciones()
{
    return $this->hasMany('App\Calificacion','id_asignatura');
}

поглощенный un par de where является pero не меня resulta, quien puede ayudarme porfavor. Gracias de antemano.

1
задан 11.03.2017, 06:21
2 ответа

Поскольку я могу наблюдать связи estГЎn хорошо в моделях тогда как дела работая с ORM, не нужно $asignatura = Asignatura::find($idasi);

В твоем виде прямо ты можешь соглашаться она с переменной $alumno

Пример:

@foreach($alumno->calificaciones as $calificacion)
     {{ $calificacion->asignatura->nombre_asignatura }}
@foreach
1
ответ дан 24.11.2019, 10:40

Ты можешь делать что-то как это.

$alumno = DB::table('alumnos as a')
            ->join('calificaciones as cal', 'a.atributo_llaveforanea', '=', 'cal.llave_foranea')
            ->orderBy('idalumno', 'desc')
            ->get();
        return view('datos-profesor.vercalificacion', ["calificaciones" => $alumno]);

, Где a.atributo_llaveforanea и a.atributo_llaveforanea - связанные признаки.

не забывай включить класс use DB; в начало твоего драйвера

0
ответ дан 24.11.2019, 10:40
  • 1
    Спасибо за ответ, но согласно мне, этот одинокий join показывал мне квалификации ученика, не квалификации ученика в предмете. – Edgardo Escobar 11.03.2017, 19:24