Laravel - Как получить доступ и управлять сводной таблицей - PullRequest
0 голосов
/ 07 октября 2019

У меня есть две таблицы: users и like_categories, которые имеют отношение «многие ко многим». Сводная таблица называется like_category_user. После вставки данных двух пользователей в БД моя сводная таблица выглядит следующим образом: https://i.imgur.com/MeeRbiV.png

Я немного запутался в том, как мне получить доступ к сводной таблице, так как я не создал собственную модель для этой сводной таблицы,Я хочу подсчитать сумму для каждой из разных категорий как для каждого пользователя и сохранить ее в массиве объектов следующим образом:

[
    {
        "User Id": 1,
        "Like Categories": [
            {
                "Category": Chinese Restaurant
                "Amount": 1
            },
            {
                "Category": Korean Restaurant
                "Amount": 2
            },
            {
                "Category": Fast Food Restaurant
                "Amount": 3
            },
            {
                "Category": Italian Restaurant
                "Amount": 1
            },
            {
                "Category": Steakhouse Restaurant
                "Amount": 3
            }
        ]
    },
    {
        "User Id": 2,
        "Like Categories": [
            {
                "Category": Thai Restaurant
                "Amount": 1
            },
            {
                "Category": Kebab Shop
                "Amount": 3
            },
            {
                "Category": Pizza Place
                "Amount": 2
            },
            {
                "Category": Steakhouse
                "Amount": 1
            }
        }
    }
]

Мой метод процесса:

public function showUserLikesData() {
    //
}

Ответы [ 2 ]

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

В ваших отношениях вы можете добавить ->withPivot('column_name'), что позволяет вам использовать больше, чем внешние ключи из сводной таблицы. Итак, пример:

public function things(){
    return $this->belongsToMany('App\ModelName')->withPivot('column_name')->withTimestamps();
}
0 голосов
/ 08 октября 2019

Попробуйте выполнить это объяснение , согласно вашему коду.

Нет реальной необходимости создавать модель для этой таблицы. По сути, вам нужно создать функцию в ваших моделях, чтобы иметь доступ к этой таблице. В вашем представлении или в вашем API, вам нужно будет упомянуть эту функцию вместе с Pivot, но с полем. Что-то вроде:

$showUserLikesData->pivot->FieldName
...