Php 拉雷维尔雄辩的关系混乱
这是我的情况Php 拉雷维尔雄辩的关系混乱,php,arrays,laravel,eloquent,Php,Arrays,Laravel,Eloquent,这是我的情况 我有一个协议表,其中列出了不同类型的协议。它基本上是一个查找表 我有一个client_agreements表,其中列出了哪些客户签署了哪种类型的协议。我在此表中有一个协议\u id(外键id) 当我使用Laravel时,这里是我的控制器方法,用于查看特定客户的所有协议 public function index($client_id) { $client_agreements = Agreement::find($client_id); return View
- 我有一个协议表,其中列出了不同类型的协议。它基本上是一个查找表
- 我有一个client_agreements表,其中列出了哪些客户签署了哪种类型的协议。我在此表中有一个
(外键id)协议\u id
public function index($client_id)
{
$client_agreements = Agreement::find($client_id);
return View::make('client_agreements.index')
->with('client_agreements', $client_agreements);
}
这是我的协议
模型
class Agreement extends Eloquent {
protected $table = 'agreements';
public function client_agreements(){
return $this->hasMany('ClientAgreement', 'agreement_id');
}
}
因此,我想在视图中从协议
表中输出
- 协议类型
- 水平仪
客户协议
表中
- 开始日期
- 到期日
@foreach($client_agreements as $client_agreement)
<tr>
<td>{{ $client_agreement->agreement_type }}</td>
<td>{{ $client_agreement->level }}</td>
<td>{{ $client_agreement->start_date }}</td>
<td>{{ $client_agreement->expire_date }}</td>
</tr>
@endforeach
@foreach($client\u协议作为$client\u协议)
{{$client\ u agreement->agreement\ u type}
{{$client_agreement->level}
{{$client_agreement->start_date}
{{$client_agreement->expire_date}
@endforeach
我做错了什么?你可以这样做:
$client = Client::with('agreements')->find($client_id);
$client_agreements = $client->agreements;
return View::make('client_agreements.index')
->with('client_agreements', $client_agreements);
在你看来:
@foreach($client_agreements as $client_agreement)
<tr>
<td>{{ $client_agreement->agreement_type }}</td>
<td>{{ $client_agreement->level }}</td>
<td>{{ $client_agreement->pivot->start_date }}</td>
<td>{{ $client_agreement->pivot->expire_date }}</td>
</tr>
@endforeach
协议模型
要了解更多信息,请阅读(特别是关于关系的部分)我实际上已经有了一个客户模型,或者你刚刚发现我可能会有。您的解决方案有效,谢谢!你能解释一下为什么我必须在这里涉及客户机模型/类吗?我不能完全想象它。。即使在阅读了这些文档之后,你也必须涉及到客户模型。您可以尝试使用
$Client\u id
获取与客户端有关系的所有协议,但这会使访问数据透视变得更加复杂。在这种情况下,我总是从我的id所在的实体开始。。。你知道我的意思吗?我从来没有想过在这一点上包括客户机模型,所以看起来我有更多的阅读要做。您知道如何显示客户协议.id
值吗?如果我在视图中执行$client\u agreement->id
,则仅显示agreements.id
值。尝试$client\u agreement->pivot->id
如果不起作用,则需要将id
添加到关系中的with pivot
调用中。我知道,pivot
对象中会自动提供两个外键(client\u id
和agreement\u id
),但我不确定id本身……我必须将id
添加到关系中,但它确实起了作用。。谢谢
class Client extends Eloquent {
public function agreements(){
return $this->belongsToMany('Agreement', 'client_agreements')->withPivot('id', 'start_date', 'expire_date');
}
}
class Agreement extends Eloquent {
public function clients(){
return $this->belongsToMany('Client', 'client_agreements')->withPivot('id', 'start_date', 'expire_date');
}
}