Разработать конкретную ситуацию в Laravel (отношения многих ко многим) - PullRequest
0 голосов
/ 23 октября 2019

Я хочу спросить о конкретной ситуации ..

У меня есть 3 модели:

Магазин

Цена

Товар

Мне нужно установить конкретную цену для магазина на конкретный товар ..

например:

если у меня есть продукт A, который стоит 100 $, я хочу установить его как 50 $ для магазина A, 80 $ для магазина B ... и т. д.

Я создал много-много отношений между Store иЦена

и я сохранил product_id в сводной таблице ...

как показано ниже

Store.php

<?php

namespace App\Modules\Store\Models;
use App\Modules\Store\Models\Price;


class Store extends Model
{



    public function prices()
    {
        return $this->belongsToMany(Price::class,'store_prices');

    }

}

Price.php

<?php

namespace App\Modules\Store\Models;

use App\Modules\Store\Models\Store;
use Illuminate\Database\Eloquent\Model;

class Price extends Model
{
    protected $fillable = ['price'];

    public function stores()
    {
        return $this->belongsToMany(Store::class, 'store_prices');
    }

}


StorePrice.php

<?php

namespace App\Modules\Store\Models;

use App\Modules\Product\Models\Product;
use App\Modules\Store\Models\Price;
use App\Modules\Store\Models\Store;
use Illuminate\Database\Eloquent\Model;

class StorePrice extends Model
{
    protected $fillable = ['store_id', 'price_id', 'product_id'];
    protected $table = 'store_prices';

    public function store()
    {
        return $this->belongsTo(Store::class, 'store_id');
    }

    public function price()
    {
        return $this->belongsTo(Price::class, 'price_id');
    }

    public function product()
    {
        return $this->belongsTo(Product::class, 'product_id');
    }

}



это логически верно?

, если это так,Как я могу сгруппировать цену по продукту и показать соответствующие магазины?

В противном случае, я надеюсь, вы можете дать, возможно, лучшие предложения

Заранее спасибо

1 Ответ

0 голосов
/ 23 октября 2019

Вам не нужна модель StorePrice. Вы просто изменяете одну из двух моделей и добавляете withPivot ('product_id') следующим образом

return $this->belongsToMany(Store::class, 'store_prices')->witPivot('product_id');

Что касается группировки, вы можете сделать, если обычный запрос, который объединяет три таблицы (store, pice и pivot), затемгрупповые результаты на основе product_id

...