Php 无法在使用额外透视变量-Laravel 5.4定义的集合中执行foreach
我只是无法得到一个集合中的模型列表。这似乎是个简单的问题,但我就是猜不出正确的解决方案 我有一个包含3个外键的透视表:Php 无法在使用额外透视变量-Laravel 5.4定义的集合中执行foreach,php,laravel,eloquent,relationship,laravel-5.4,Php,Laravel,Eloquent,Relationship,Laravel 5.4,我只是无法得到一个集合中的模型列表。这似乎是个简单的问题,但我就是猜不出正确的解决方案 我有一个包含3个外键的透视表: 表领导供应商\u产品 id | lead_id | supplier_id | product_id 4 | 128 | 2048 | 8 3 | 120 | 2048 | 7 4 | 120 | 2048 | 8 在我的“供应商”模型中,我定义了这种关系: public function pro
表领导供应商\u产品
id | lead_id | supplier_id | product_id
4 | 128 | 2048 | 8
3 | 120 | 2048 | 7
4 | 120 | 2048 | 8
在我的“供应商”模型中,我定义了这种关系:
public function products()
{
// ->where('leadsupplier_product.lead_id', $leadid)
return $this->belongsToMany(\App\Models\Product::class, 'leadsupplier_product', 'supplier_id', 'product_id')->withPivot('lead_id','id');
}
我想要得到的是:
在给定的lead模板中,我希望通过foreach
循环遍历模型
因此,在模板中,$lead=120;
我有这个:
计数
它的工作原理与预期一样(我得到了适当数量的型号)
我在Macroable.php第74行得到了ErrorException:methodwherepivot不存在。
为什么
预科
但在我的foreach
循环中,我无法打印收藏:
// no objects printed
@foreach($o->products()->where('leadsupplier_product.lead_id', $lead->id) as $ps)
<a class="btn btn-sm bg-greenish">abc {{$ps->id}} </a>
LbyP:{{$ps->pivot->lead_id}} LS: {{$ps->pivot->id}} L:{{$lead->id}}
@endforeach
// no objects printed
@foreach($o->products()->wherePivot('lead_id', $lead->id) as $ps)
<a class="btn btn-sm bg-greenish">abc {{$ps->id}} </a>
LbyP:{{$ps->pivot->lead_id}} LS: {{$ps->pivot->id}} L:{{$lead->id}}
@endforeach
你的问题有两个部分 第一部分
{{$o->products()->wherePivot('lead_id', $lead->id)->count()}}
and it works as expected (I get the proper number of models)
// no `()` after the relation name
{{$o->products->wherePivot('lead_id', $lead->id)->count()}}
I get ErrorException in Macroable.php line 74: Method wherePivot does not exist. Why?
当您调用不带()的关系时,它将尝试返回关系值。。。当您使用()调用它时,它将返回您可以继续构建的查询生成器对象。。。就像你正在做的
现在,当这样做时,它必须是一个完整的查询生成器语句。。。不要忘记->获取()。。。就像这样。。。那应该有用
$o->products()->wherePivot('lead_id', $lead->id)->get()
这将返回您正在寻找的收藏
希望这对你的问题有两个部分的帮助 第一部分
{{$o->products()->wherePivot('lead_id', $lead->id)->count()}}
and it works as expected (I get the proper number of models)
// no `()` after the relation name
{{$o->products->wherePivot('lead_id', $lead->id)->count()}}
I get ErrorException in Macroable.php line 74: Method wherePivot does not exist. Why?
当您调用不带()的关系时,它将尝试返回关系值。。。当您使用()调用它时,它将返回您可以继续构建的查询生成器对象。。。就像你正在做的
现在,当这样做时,它必须是一个完整的查询生成器语句。。。不要忘记->获取()。。。就像这样。。。那应该有用
$o->products()->wherePivot('lead_id', $lead->id)->get()
这将返回您正在寻找的收藏
希望这有帮助谢谢。我会在几个小时后测试,谢谢。我会在几个小时后测试它。
{{$o->products()->wherePivot('lead_id', $lead->id)->count()}}
and it works as expected (I get the proper number of models)
// no `()` after the relation name
{{$o->products->wherePivot('lead_id', $lead->id)->count()}}
I get ErrorException in Macroable.php line 74: Method wherePivot does not exist. Why?
$o->products()->wherePivot('lead_id', $lead->id)->get()