【发布时间】:2019-07-25 19:02:04
【问题描述】:
我的应用上有User、Shop 和Product 模型。和这样的关系:
用户
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 页面上通过$product->shops 获得所有附加的商店,并且通过auth()->user()->shops 获得所有的auth 用户购物。实际上,我想在Product 页面上显示未附加到此Product 的auth 用户商店。根据 Laravel 文档,我编写了一些代码,但由于某种原因它不起作用。我的代码是:
auth()->user()->shops()->whereDoesntHave('products', function (Builder $query) {
$query->where('id','!=', $product->id);
})->get();
我们将不胜感激。
谢谢
【问题讨论】:
-
如果您将
function (Builder $query)更改为简单的function ($query),它应该工作。此外,包括use($product),以便$product->id在范围内可访问。总之:->whereDoesntHave(function($query) use($product){ ... })->get() -
嗨@TimLewis 它现在正在工作。请将第一个更改解释为答案,我想接受答案。