Veran, tengo 2 tablas, una llamada Enlaces, con estos valores:
Schema::create('enlaces', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('juego_id');
$table->foreign('juego_id')->references('id')->on('juegos');
$table->unsignedInteger('contenido_id');
$table->foreign('contenido_id')->references('id')->on('contenidos');
$table->timestamps();
});
Y otra llamada Contenido:
Schema::create('contenidos', function (Blueprint $table){
$table->increments('id');
$table->string('nombre');
$table->timestamps();
});
Estas tablas se relacionan por el valor contenido_id de Enlace, que apunta a Contenido.
Para saber cuantas veces es referenciado una fila de Contenido en una fila Enlace, tengo la función “contento”:
public function contento(){
$contenidos=Contenido::orderBy('nombre')->get();
return view('listas.datos_contenido',compact('contenidos'));
}
Que apunta a esta vista:
@extends('layouts.app')
@section('content')
<h1 class="text-center text-mute"><u>Lista de juegos por contenido:</u></h1>
<div class="pl-5 pr-5">
<div class="row justify-content-center">
<div class="col-md-3 card card-body">
@forelse($contenidos as $c)
<b><i>{{$c->nombre}}: {{count($c->enlaces)}}</i></b>
<hr>
@empty
<div class="alert alert-danger">
<h1 class="text-center">¿¡No se ha creado ningún contenido aún!?</h1>
</div>
@endforelse
</div>
</div>
</div>
@endsection
Siendo la función “enlaces” el siguiente código en Contenido.php:
public function enlaces(){
return $this->hasMany(Enlace::class);
}
Este es el resultado:
En si esto funciona, lo único es que esto ordena por nombre del contenido. A mi lo que me interesa es que se ordene la lista de contenidos por el número de veces que es referenciado en la tabla Enlace. ¿Cómo se haria?