Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法在使用额外透视变量-Laravel 5.4定义的集合中执行foreach_Php_Laravel_Eloquent_Relationship_Laravel 5.4 - Fatal编程技术网

Php 无法在使用额外透视变量-Laravel 5.4定义的集合中执行foreach

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

我只是无法得到一个集合中的模型列表。这似乎是个简单的问题,但我就是猜不出正确的解决方案

我有一个包含3个外键的透视表:

表领导供应商\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()