Получить значение столбца от отношения многие ко многим в Laravel

Получить значение столбца от отношения многие ко многим в Laravel

12.01.2020 11:09:27 Просмотров 36 Источник

Это моя структура таблиц: enter image description here

Атрибут.РНР

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Attribute extends Model
{
   protected $guarded = [];

   public function products()
   {
       return $this->belongsToMany('App\Product');
   }

}

Товар.РНР

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
   protected $guarded = [];

   public function attributes()
   {
       return $this->belongsToMany('App\Attribute');
   }

}

Я хочу получить столбец valueдля каждой строки.
Какой код я должен написать в своем контроллере, чтобы получить доступ к этому value?
Laravel версия: 6.9.0
Спасибо

У вопроса есть решение - Посмотреть?

Ответы - Получить значение столбца от отношения многие ко многим в Laravel / Get column value from Many to Many Relationship in Laravel

Mehedi Hasan

12.01.2020 11:18:20

Вы можете решить эту проблему, добавив следующий метод вашего конца отношений

withPivot(['value']);
public function attributes()
{
    return $this->belongsToMany('App\Attribute')->withPivot(['value']);
}

А также

public function products()
{
    return $this->belongsToMany('App\Product')->withPivot(['value']);
}
https://stackoverflow.com/questions/59702045/get-column-value-from-many-to-many-relationship-in-laravel/59702091#comment105558563_59702091
Это не обязательно должен быть массив, withPivot('value')сделает это. Вот документация: laravel.com/docs/6.x/eloquent-relationships
https://stackoverflow.com/questions/59702045/get-column-value-from-many-to-many-relationship-in-laravel/59702091#comment105572786_59702091
Хм, конечно, вы можете сделать это таким образом, но когда вам нужно несколько столбцов. Проверьте эту документацию: laravel.com/docs/6.x/…
Является ответом!
Md. Amirozzaman

12.01.2020 02:17:51

Когда мы реализуем связь "много ко многим", она по умолчанию создает промежуточную таблицу

В вашем случае эта таблица является attribute_product стол.

Это значение таблицы было получено этими моделями по Pivot

Чтобы добавить дополнительный столбец в (сводную таблицу )

По умолчанию в таблице attribute_product будут присутствовать только ключи модели [ pivot, $product = App\Product::find(1); foreach ($product->attributes as $attribute) { echo $attribute->pivot->product_id; } ]$attribute_idтаблица содержит дополнительные атрибуты, их необходимо указать при определении связи:

$product_id

Изменение attribute_product атрибут name на ваше имя

возможно, вы захотите переименовать свой промежуточную таблицу доступа к pivot , а не return $this->belongsToMany('App\Attribute')->withPivot('column1', 'column2','value'); .

pivot

Затем вы будете получать по values вместо pivot

Помочь в развитии проекта:
Закрыть X