如何返回雄辩的关系,但只选择不为null的列?

时间:2019-03-11 20:41:48

标签: laravel select eloquent isnull

因此,我有一个关系,即客户端附加到单引号,而客户端具有一组度量(但我称其为Measurement,抱歉,有点混乱,但它可以工作)。因此,如果我将$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
}

有没有办法我只能选择那些不为空的列?我知道我可以存储所有内容,然后遍历它并恢复值,但是我觉得那效率太低了。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

假设client-measurement是一种口才的模型,则可以使用filter()

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

filter方法使用给定的回调过滤集合,   仅保留那些通过给定真相测试的项目。

     

如果未提供回调,则该集合中所有   与false等效的内容将被删除。

     

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

答案 1 :(得分:1)

除了@ travis-britz答案之外,您还可以执行以下操作:

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

您可以找到有关array_filter here的文档。