Изменение laravel имени таблицы в коллекции только для вывода - PullRequest
0 голосов
/ 17 июня 2020

У меня две модели

class MerchOrder extends Model
{
    protected $table = 'merch_orders';

    protected $with = 'merchProducts';

    public function merchProducts()
    {
        return $this->belongsToMany(MerchProduct::class, 'merch_products_ordered', 'orderno', 'product')
            ->withPivot('quantity', 'price');
    }

}

и

class MerchProduct extends Model
{
    protected $table = 'merch_products';

    public function merchOrders ()
    {
        return $this->belongsToMany(MerchOrder::class, 'merch_products_ordered', 'product', 'orderno');
    }

}

Это то, что возвращается

    {
        "id": 1234,
        "receipt": "G4DD8C",
        "employee": 01,
        "location": 2,
        "time_insert": "2020-02-21 10:46:47",
        "time_update": "2020-02-23 06:11:23",
        "status": "delivered",
        "merch_products": [
            {
                "id": 45,
                "title": "Example Title",
                "desc": "Example Description",
                "price": "237.50",
                "pivot": {
                    "orderno": 57,
                    "product": 45,
                    "quantity": 1,
                    "price": "237.50"
                }
            }
        ]
    },

как изменить имя таблицы, которая выводится в родственном классе? IE. в этой части я хочу, чтобы вывод был как «упорядоченный» вместо имени таблицы «merch_products»

"merch_products": [
            {

Я пробовал метод laravel as (), но он просто переименовал клавишу «pivot» и все остальное, что я могу найти, говорит только о переименовании отдельных атрибутов, но не всего набора атрибутов.

TIA

1 Ответ

0 голосов
/ 17 июня 2020

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

Вам необходимо изменить модель MerchOrder на следующую:

class MerchOrder extends Model
{
    protected $table = 'merch_orders';

    protected $with = 'orders';

    public function orders()
    {
        return $this->belongsToMany(MerchProduct::class, 'merch_products_ordered', 'orderno', 'product')
            ->withPivot('quantity', 'price');
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...