как я могу получить поле значения из сводной таблицы (продукт для значения)? -Laravel

я пытаюсь создать простую связь между таблицами:

- attribute_products -
    id
    name

- products -
    id
    name
    price

сводная таблица, чтобы связать их:

- attribute_product_value -
    attribute_type_id
    value
    product_id 

Модель продукции

 public function attributeProduct(){
        return $this->belongsToMany(AttributeProduct::class,'attribute_product_values','product_id','attribute_id');
    }

attribute_products модель

public function product()
    {
        return $this->belongsToMany(Product::Class,'attribute_product_values','attribute_id','product_id');
    }

как я могу получить поле значения из сводной таблицы (продукт для значения)?


person Phú    schedule 28.11.2020    source источник


Ответы (1)


Согласно документации Laravel, если в промежуточной таблице есть дополнительные столбцы, это необходимо указать при определении отношения

//Product
public function attributeProduct(){
    return $this->belongsToMany(
        AttributeProduct::class,
        'attribute_product_values',
        'product_id',
        'attribute_id'
    )
    ->withPivot('value');
    //If you want created_at and updated_at on pivot table
    ///withTimestamps();
}


//AttributesProduct

public function product()
{
    return $this->belongsToMany(
        Product::Class,
        'attribute_product_values',
        'attribute_id',
        'product_id'
    )
    ->withPivot('value');
    //If you want created_at and updated_at on pivot table
    ///withTimestamps();
}

Чтобы получить доступ к столбцу в промежуточной таблице


$attributeProduct = AttributesProduct::find(1);

foreach($arrtibutesProduct->products as $prouct)
{
    $product->pivot->value;
}

Вы можете настроить pivot имя атрибута

См. https://laravel.com/docs/8.x/eloquent-relationships#retrieving-intermediate-table-columns

person Donkarnash    schedule 28.11.2020