I am trying to create an offers forum, where some user can create their offers in order to provide their services and I want to show the name of the person that created that offer instead of the id.
In my database I have the two tables:
Offers table:
User table:
In offers I have a column of the professor_id, that is related to the id of users table.
This is what i have in my controller to show the offers:
public function ofertes(){ $ofertes = Oferta::all()->sortByDesc('id'); return view('create.ofertes')->with(compact('ofertes')); }
and in the blade.php I have that code:
@foreach($ofertes as $oferta) <tr> <td>Nom : {{$oferta->professor_id}}</td> <br> <td>Títol : {{$oferta->titol}}</td> <br> <td>Descripció: {{$oferta->descripcio}}</td> <br> <td>Data: {{$oferta->created_at}}</td> <br><br> </tr> @endforeach
and that is what is shown:
Where it says nom, how I can show the name instead of the id?
Thank you!
Advertisement
Answer
If you have specified the relationship to professor
in your Oferta model you can use the following code:
public function ofertes(){ $ofertes = Oferta::with('professor')->latest()->get(); return view('create.ofertes')->with(compact('ofertes')); }
Your blade:
@foreach($ofertes as $oferta) <tr> <td>Nom : {{$oferta->professor->nom}}</td> <br> <td>Títol : {{$oferta->titol}}</td> <br> <td>Descripció: {{$oferta->descripcio}}</td> <br> <td>Data: {{$oferta->created_at}}</td> <br><br> </tr> @endforeach
If you haven’t specified the relation you should add the following method to your Oferta model (you might need to tweak this a little bit based on your namespaces):
public function professor() { return $this->belongsTo(User::class); }