我正在尝试创建一个商品论坛,一些用户可以在其中创建商品以提供服务,并且我想显示创建商品的人的姓名,而不是ID。
在我的数据库中,我有两个表:
优惠表:
用户表:
在报价中,我有一列Professor_id,与用户表的ID有关。
这是我在控制器中显示的报价:
props
在blade.php中,我有该代码:
props
,显示如下:
在显示nom的地方,如何显示名称而不是ID?
谢谢!
答案 0 :(得分:2)
如果您在Oferta模型中指定了与professor
的关系,则可以使用以下代码:
public function ofertes(){
$ofertes = Oferta::with('professor')->latest()->get();
return view('create.ofertes')->with(compact('ofertes'));
}
您的刀片:
@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
如果尚未指定该关系,则应在Oferta模型中添加以下方法(您可能需要根据名称空间对此进行一些调整):
public function professor()
{
return $this->belongsTo(User::class);
}
答案 1 :(得分:0)
很容易
public function ofertes(){
$ofertes = Oferta::with('professor')->latest()->get();
$users = User::all();
return view('create.ofertes')->with(compact('ofertes', 'users'));
}
In blade file:
<td>Nom : @foreach ($users as $user)
@if ($oferta->professor_id === $user->id) $user->nom $user->cognom
@endif
@endforeach
</td><br>
答案 2 :(得分:-2)
像这样加入两个表
$oferta = DB::table('users')
->join('offers','users.id','=','offers.professor_id')
->select('offers.*','users.nom')
->orderby('offers.id','DESC')->get();
然后替换{{$oferta->professor_id}}
代替{{$oferta->nom}}
您的问题应该得到解决