Как я могу вернуть красноречивые отношения, но только выбрать столбцы, которые не являются нулевыми? - PullRequest
0 голосов
/ 11 марта 2019

Таким образом, у меня есть отношения, когда клиент привязан к одной кавычке, а у клиента есть один набор измерений (но я назвал это измерением, извините, немного смущает, но это работает). Поэтому, если я связываю $quote с моим маршрутом и выполняю return $quote->client-measurement;, я получаю следующее:

{
    "id": 11,
    "client_id": 5,
    "eaves": "101.15",
    "ridges": "50.57",
    "hips": null,
    "valleys": null,
    "rakes": "95.08",
    "drip_edge": null,
    "flashing": "1.01",
    "step_flashing": null,
    "quote_id": null,
    "item_id": null,
    "created_at": "2019-01-08 17:14:43",
    "updated_at": "2019-01-08 17:14:43",
    "total_roof_area": "20.87",
    "total_steep_slope_area": "12.61",
    "total_low_slope_area": "8.27",
    "length": null,
    "width": null,
    "parapet_walls": null,
    "roof_penetrations": null,
    "total_low_slope_area_without_penetrations": null,
    "penetrations_perimeter": null,
    "roof_length": null
}

Можно ли выбрать только те столбцы, которые не равны NULL? Я знаю, что могу хранить все это, затем проходить через него и восстанавливать значения, но я чувствую, что это супер неэффективно. Есть идеи?

Ответы [ 2 ]

1 голос
/ 12 марта 2019

В дополнение к ответу @ travis-britz вы также можете сделать следующее:

return array_filter($quote->client-measurement->toArray());

Документы о array_filter можно найти здесь .

1 голос
/ 12 марта 2019

Предполагая, что client-measurement - модель Eloquent, вы можете использовать filter():

return collect($quote->client_measurement)->filter();

. Метод filter фильтрует коллекцию с использованием заданного обратного вызова, сохраняя только те элементы, которые проходятданный тест на истинность.

Если обратный вызов не предоставлен, все записи коллекции, эквивалентные false, будут удалены.

https://laravel.com/docs/5.8/collections#method-filter

...