我是laravel 5的新手。我一直在开发一个客户端应用程序,我已经设置了这样的关系:
Application和Cart之间的多对多关系为我提供了一个带有列
的application_cart表样本模型
class Application extends Eloquent
{
public function carts()
{
return $this->belongsToMany('App\Cart');
}
}
class Cart extends Eloquent
{
public function applications()
{
return $this->belongsToMany('App\Application');
}
}
使用上面的模型,我能够在下面的视图中精美地显示记录:
@foreach($cart->applications as $application)
<td>{{ $application->student->last_name }}</td>
<td>{{ $application->student->first_name }}</td>
@endforeach
最近,客户端已经更改了规范,因此我在数据透视表上添加了第三列supervisor_id 导致像这样的数据透视表结构:
application_cart table
目标是让我现在能够显示如下输出:
@foreach($cart->applications as $application)
<td>{{ $application->student->last_name }}</td>
<td>{{ $application->student->first_name }}</td>
<td>
{{ $application->supervisor->user->name }} <!-- Display the "supervisor name" assign to the application (How can I beautifully display the supervisor name)-->
</td>
@endforeach
如何在代码中轻松集成此新规范?
修改
关系如何形成的粗略图表:
答案 0 :(得分:0)
Application.php
需要supervisor()
关系
public function supervisor() {
return $this->hasOne(App\Supervisor::class);
}
您的Supervisor.php
模型需要user()
关系
public function user() {
return $this->belongsTo(App\User::class);
}
为了实现这一目标,您的supervisor
表格必须有user_id
列,而您的supervisor
表格必须有application_id
列。
您没有在数据透视表中放置第三个外键。保持application_cart不变,引用应用程序和购物车。虽然可以根据应用程序定义超级用户外键,因为我假设您每个应用程序都需要一个主管。