Laravel-雄辩的许多人获得独立的数据

时间:2019-07-25 19:02:04

标签: laravel eloquent

我的应用程序上有UserShopProduct模型。和这样的关系:

用户

public function products(){
   return $this->hasMany("App\Product");
}
public function shops(){
   return $this->hasMany("App\Shop");
}

商店

public function user(){
    return $this->belongsTo("App\User");
}
public function products(){
    return $this->belongsToMany("App\Product");
}

产品

public function user(){
    return $this->belongsTo('App\User');
}
public function shops(){
    return $this->belongsToMany("App\Shop");
}

因此,用户可以添加产品商店,然后将产品附加到许多商店。现在,我可以在$product->shops页面上通过product获取所有附属商店,并通过auth()->user()->shops对所有商店进行身份验证。实际上,我想在Product页上显示未连接到此Product的auth用户商店。根据Laravel文档,我编写了一些代码,但是由于某种原因它不起作用。我的代码是:

auth()->user()->shops()->whereDoesntHave('products', function (Builder $query) {
                                $query->where('id','!=', $product->id);
                            })->get();

错误: enter image description here

任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

在此处将评论转换为答案。

首先,function(Builder $query)的使用针对Builder的不正确版本(可能是命名空间问题),因此只需从函数中删除Builder即可使其解决。

>

第二,要在新函数的范围内使用$product,则需要使用use($product)来传递它,否则会出现Undefined variable $product错误。

总而言之,新功能应如下所示:

auth()->user()->shops()->whereDoesntHave('products', function ($query) use($product) {
  $query->where('id','!=', $product->id);
})->get();
相关问题