如何在Laravel中通过ID选择不同表上的关系数据

时间:2019-03-28 04:55:54

标签: laravel model controller relation

我有3个表,名称是:用户,机器,维护。这样的模式

  

*用户

     

id |名称|电邮|密码created_at | Updated_at

     

1 |约翰| A @ mail | *******等

     

*机器

     

id | name_machine | created_at | Updated_at

     

1 |震撼.....等

     

*维护

     

id | Machine_id | user_id |问题状态| created_at |   Updated_at

     

1 | ......... 1 ........ | ....... 1 ...... | blablabla等..

现在我想在表“ Maintance”上显示数据,并通过id显示数据“名称”(用户表)和name_machine(“机器表”)。

这是我的控制者和我的观点

 public function show($id)
{
    $maintance = Maintance::all();
    return view('users.view',['maintance' => $maintance]);
}

我的观点

<table class="table table-hover">
              <tbody><tr>
                <th>Machine</th>
                <th>Question</th>
                <th>User Input</th>
                <th>Action</th>
                <th>Tanggal</th>
              </tr>
              @foreach ($maintance as $i)
              <tr>
                <td>{{ $i->machine_id}} </td>// i want to show name machine here
                <td>{{ $i->Question}}</td>
                <td>{{ $i->user_id}}</td> // name users to 
                <td><span class="label label-primary">Lihat Data</span></td>
                <td>{{ $i->created_at}}</td>
              </tr>
              @endforeach
            </tbody></table>

此视图数据没有错误,但我不知道如何从不同的表中显示此数据。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

假设您的Maintance模型如下,

public function user(){
  return $this->belongsTo(User::class);
}
public function machine(){
  return $this->belongsTo(Machine::class);
}

假设您的模型具有上述关系。

并执行以下操作以获取数据,

$maintance = Maintance::with(['user','machine'])->get();

在您看来

<table class="table table-hover">
          <tbody><tr>
            <th>Machine</th>
            <th>Question</th>
            <th>User Input</th>
            <th>Action</th>
            <th>Tanggal</th>
          </tr>
          @foreach ($maintance as $i)
          <tr>
            <td>{{ $i->machine->machine_name}} </td>// i want to show name machine here
            <td>{{ $i->Question}}</td>
            <td>{{ $i->user->name}}</td> // name users to 
            <td><span class="label label-primary">Lihat Data</span></td>
            <td>{{ $i->created_at}}</td>
          </tr>
          @endforeach
        </tbody></table>