Красноречивый и EAV - PullRequest
       68

Красноречивый и EAV

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

Внедрение электронной коммерции с использованием laravel 6, модель eav, используемая для захвата атрибутов продуктов следующим образом:

Вопрос заключается в том, как получить атрибут продукта (цвета) Значение конкретного продукта (например: productno3)текущая реализация получает ВСЕ атрибут (цвет) значения. нам нужны только (например, productno3) цвета.

database schema

данные каждой таблицы следующие:

products attributes products_attributes value products_attributes_values

Модель изделия

class Product extends Model{

protected $fillable = ['name', 'brand', 'price', 'description', 'image_name'];

public function category(){
    return $this->belongsTo(Category::class);
}


public function attributes(){

    return $this->belongsToMany(Attribute::class,'products__attributes')->withTimestamps();
}   }

Модель атрибута

class Attribute extends Model{

public function products(){

    return $this->belongsToMany(Product::class,'products__attributes')->withTimestamps();
}



public function values()
{
    return $this->hasMany(Value::class);
}}

Модель значения

class Value extends Model{

public function attribute()
{
    return $this->belongsTo(Attribute::class);
}




public function productattributevalue()
{
    return $this->hasMany(Attribute::class,'products_attributes_values');

}}

ProductController

class ProductController extends Controller{   

public function index()
{
    // we need to get the productno3 colors from table ( products_attributes_values )
    $product_no3 = Product::find(3)->attributes()->first()->values;dd($product_no3);}}

Как получить атрибут продукта (цвета) Значение конкретного продукта (например: productno3) текущей реализации получают ВСЕ атрибута (цвета) Значения. нам нужны только цвета (например: productno3). Для productno3 он должен быть только красным и синим.

dd($product_no3);

enter image description here

должно быть только красным и синим для productno3.

enter image description here

Дамп SQL находится по этой ссылке: SQL DUMP

1 Ответ

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

Если у вас есть 2 таблицы products_attributes, attribute и есть атрибут 'color'.

Конструктор запросов Laravel

 $users = DB::table('products_attributes')
      ->join('attributes', 'products_attributes.attribute_id', '=', 'attributes.id')
      ->select('attributes.color')
      ->get();

Я думаю, что это можно решитьобъединение 2 таблиц.

...