Laravel 5删除空集合属性

Laravel 5删除空集合属性,laravel,Laravel,我有一个名为estate的模型,其中有许多字段 我使用单个视图来查看相应控制器中的create和show方法 要在create方法中执行此操作,我创建了一个空集合: $estate = collect(new Estate); $estate->id = null; $contact->area_name = null; $contact->zone_name = null; $estate->tip

我有一个名为
estate
的模型,其中有许多字段

我使用单个视图来查看相应控制器中的
create
show
方法

要在
create
方法中执行此操作,我创建了一个空集合:

$estate = collect(new Estate);

$estate->id                  = null;
$contact->area_name          = null;
$contact->zone_name          = null;
$estate->tipologia           = null;
$estate->metratura           = null;
$estate->external_id         = null;
$estate->descrizione         = null;
$estate->piano               = null;
$estate->price               = null;
$estate->via                 = null;
$estate->zone_id             = null;
$estate->area_id             = null;
$estate->riscaldamento       = null;
$estate->condizione_immobile = null;
$estate->vista               = null;
我想在创建空集合时删除所有那些
null
值,但我需要在控制器中删除这些值,但如果我这样做:

$estate = collect(new Estate);
如果没有任何
null
键,它会给出一个错误
属性[id]在此集合实例上不存在。
(实际上是正确的)。如何将它们默认设置为null?

尝试使用
isset()
。像这样:

isset($estate->vista) ? doSomething() : echo '...';
如果在控制器中需要此功能,您仍然可以执行以下任一操作:

// Executing a function (example: doSomethingWith() or doNothing())
isset($estate->visita) ? doSomethingWith($estate->visita) : doNothing();

// Or set a value
$variable = isset($estate->visita) ? $estate->visita : 'string of text';
或者您可以使用更常见的if语句:

if(isset($estate->visita))
{
   doSomething();
}
尝试使用
isset()
。像这样:

isset($estate->vista) ? doSomething() : echo '...';
如果在控制器中需要此功能,您仍然可以执行以下任一操作:

// Executing a function (example: doSomethingWith() or doNothing())
isset($estate->visita) ? doSomethingWith($estate->visita) : doNothing();

// Or set a value
$variable = isset($estate->visita) ? $estate->visita : 'string of text';
或者您可以使用更常见的if语句:

if(isset($estate->visita))
{
   doSomething();
}

尝试像这样使用
empty

@if(!empty($estate->piano)) //do_someThisng    @else //do_something_or_nothing    @endif
如果要在控制器中执行此操作

foreach($estate as $e)
{
   if($e == null)
   {
       unset($estate[$s]);
   }
}

我希望此代码适用于您,我将其用于其他用途,但与您的工作类似,但我不知道是否以这种方式工作。

尝试使用
empty
如下:

@if(!empty($estate->piano)) //do_someThisng    @else //do_something_or_nothing    @endif
如果要在控制器中执行此操作

foreach($estate as $e)
{
   if($e == null)
   {
       unset($estate[$s]);
   }
}

我希望此代码适用于您,我将其用于其他用途,但与您的工作类似,但我不知道是否以这种方式工作。

您可以尝试使用过滤器:

$filteredEstate = $estate->filter(function($value, $key) {
    return  $value != null;
});

您可以尝试使用过滤器:

$filteredEstate = $estate->filter(function($value, $key) {
    return  $value != null;
});


我需要它在控制器里我需要它在控制器里我需要它在控制器里你觉得怎么样,韦伯先生?我想这不是我要的。你想再读一遍这个问题吗?TksI认为你正在努力实现一些根本不存在的东西。如果某个值为
null
,则至少该键会存在。但事实并非如此。因此,我相信
isset()
是您最好的atm解决方案。或者至少,就我的专业知识而言。我需要它在控制器中。你认为呢,@Web先生?我想这不是我所要求的。你想再读一遍这个问题吗?TksI认为你正在努力实现一些根本不存在的东西。如果某个值为
null
,则至少该键会存在。但事实并非如此。因此,我相信
isset()
是您最好的atm解决方案。或者至少,根据我的专业知识。在这种情况下,您可以使用空字符串而不是null来初始化属性。@Mr.Web您尝试过我的答案吗?在这种情况下,您可以使用空字符串而不是null来初始化属性。@Mr.Web您尝试过我的答案吗?您好,它不起作用,它返回与“id”相同的错误(例如)未设置…。@Mr.Web为什么要删除
NULL
?您可以在控制器中轻松更换它。您希望这样做的原因是什么?我不需要将所有这些键设置为
null
,而是需要一种方法将控制器该部分中的任何键返回null。就这些<代码>$estate->myfriend不存在,因此它应该返回null而不是错误。@Mr.Web check
flatMap()
此处
https://laravel.com/docs/5.7/collections#creating-collections
Hi,它不工作,返回与未设置“id”(例如)相同的错误。..@Mr.Web为什么要删除
NULL
?您可以在控制器中轻松更换它。您希望这样做的原因是什么?我不需要将所有这些键设置为
null
,而是需要一种方法将控制器该部分中的任何键返回null。就这些<代码>$estate->myfriend不存在,因此它应该返回null而不是错误。@Mr.Web check
flatMap()
此处
https://laravel.com/docs/5.7/collections#creating-收藏