Ограничивающие столбцы Larave не работают с несколькими вложенными отношениями - PullRequest
1 голос
/ 03 мая 2020

Я пытаюсь ограничить столбцы, полученные в функции With.

Следующие работы:

\App\Models\SalesItems::select('si.id', 'si.sale_id', 'si.total')
    ->from('sales_items AS si')
    ->with('Sale:id,document_id,customer')
    ->get();

Возвращает:

[
    0: 
    {
        id: 12,
        sale_id: 32,
        total: 92.00
        sale: 
        {
            id: 1,
            document_id: 9,
            customer: 'John',
        }
    }
]

следующее не работает:

\App\Models\SalesItems::select('si.id', 'si.sale_id', 'si.total')
    ->from('sales_items AS si')
    ->with('Sale:id,document_id,customer')
    ->with('Sale.Document:id,description')
    ->get();

Как он возвращает:

[
    0: 
    {
        id: 12,
        sale_id: 32,
        total: 92.00
        sale: 
        {
            id: 1,
            document_id: 9,
            customer: 'John',
            employee_id: 2,
            due_date: '2020-03-03',
            preview: false,
            created_at: '2020-03-03 14:04:32',
            updated_at: '2020-03-03 14:04:32',
            document: 
            {
                id: 9,
                description: 'Invoice'
            }
        }
    }
]

Почему поля employee_id, due_date, et c вызываются, если я этого не сделал спросить?

1 Ответ

0 голосов
/ 03 мая 2020

Из-за вашего второго загрузчика with() вы запросили все столбцы продаж, в этом причина.

Раствор

\App\Models\SalesItems::select('si.id', 'si.sale_id', 'si.total')
    ->from('sales_items AS si')
    ->with([
        'sale' => function ($query) {
            $query->select('id','document_id','customer');
            $query->with('Document:id,description');
        },
    ])
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...