2 回答

TA貢獻1794條經驗 獲得超7個贊
這樣的事情應該有效:
use App\Product;
public function missingProduct() {
$excludedProducts = $this->products()->where('amount', '>', 0)->pluck('id');
return Product::whereNotIn('id', $excludedProducts)->get();
}
基于@KarolSobański 的解決方案,當您warehouse_products向產品模型添加關系時:
use App\Product;
use Illuminate\Database\Eloquent\Builder;
public function missingProduct() {
return Product::whereDoesntHave('warehouse_products', function (Builder $query) {
$query->where('warehouse_id', $this->id);
})->orWhereHas('warehouse_products', function (Builder $query) {
$query->where('warehouse_id', $this->id);
$query->where('amount', 0);
})->get();
}

TA貢獻1772條經驗 獲得超8個贊
最短的答案可能與此類似:
Product::doesntHave('warehouse_products')
->orWhereHas('warehouse_products', function (Builder $query) {
$query->where('amount', '=', 0)
})->get();
雖然我不確定以上是否有效。
但以下較長的查詢肯定可以解決問題:
Product::where(function ($query) {
$query->doesntHave('warehouse_products');
})->orWhere(function ($query) {
$query->whereHas('warehouse_products', function (Builder $query) {
$query->where('amount', '=', 0);
});
})->get();
- 2 回答
- 0 關注
- 119 瀏覽
添加回答
舉報