获取Laravel中代码相同的相关产品

时间:2019-01-03 08:12:35

标签: laravel

我的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();

我如何定义这些关系?有人可以帮忙吗?

2 个答案:

答案 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();