我的laravel项目之一中的产品表如下:
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->integer('category_id')->unsigned()->nullable();
$table->string('title')->nullable();
$table->string('code')->nullable();
$table->integer('brand_id')->nullable();
$table->string('order')->nullable()->default('1');
$table->integer('addedby_id')->unsigned()->nullable();
$table->integer('editedby_id')->unsigned()->nullable();
$table->timestamps();
});
我想获取所有相关产品,其中单个产品的代码相同/相等。我也想加载相关的产品数量,例如
$products = App\Product::with('relatedProductCount')->get();
我如何定义这些关系?有人可以帮忙吗?
答案 0 :(得分:0)
我可能会这样:
$product = App\Product::find($id);
$related_products = App\Product::where(id,'<>',$product->id)->where('code',$product->code)->get()
$product_count = $related_products->count();
答案 1 :(得分:0)
为获得更好的封装效果,您可以在relatedProductCount
模型上创建Product
方法
public function relatedProductCount()
{
return $this->relatedProducts()->count();
}
private function relatedProducts()
{
return static::where('id', '<>', $this->id)->where('code', $this->code)->get();
}
并将其用作
$product = App\Product::find($id);
$relatedProductCount = $product->relatedProductCount();