Php 无法在if语句中使用Laravel对象

Php 无法在if语句中使用Laravel对象,php,laravel,Php,Laravel,我有一个奇怪的错误: 如果: if($item->condition && $item->variable) { //do something } else { //do something else } 这给了我一个错误: Controller.php行9001中的ErrorException:正在尝试 获取非对象的属性 我使用dd()调试了两个变量: dd($item)->condition if($item->condition &&am

我有一个奇怪的错误:

如果:

if($item->condition && $item->variable)
{
//do something
} else {
//do something else
}
这给了我一个错误:

Controller.php行9001中的ErrorException:正在尝试 获取非对象的属性

我使用dd()调试了两个变量:

dd($item)->condition

if($item->condition && $item->variable)
{
//do something
}
它返回0(如预期的那样)

它返回null(也是预期的)。因此,$item是一个对象,它包含0的变量条件和null的变量。然而,我仍然得到这个错误。如果我将数据库中的
$item->variable
更改为“foobar”,那么
dd($item->variable)
实际上将包含“foobar”


为什么我不能在这里使用if?我做错了什么?

您可以使用
属性\u exists
检查
$item
以确保该项存在

if(!isnull($item) && property_exists($item, 'condition') && property_exists($item, 'variable'))
{
//do something
}

您可以使用
属性\u exists
检查
$item
以确保该项存在

if(!isnull($item) && property_exists($item, 'condition') && property_exists($item, 'variable'))
{
//do something
}
使用isset()函数

if(isset($item->condition) && isset($item->variable))
使用isset()函数

if(isset($item->condition) && isset($item->variable))
你可以用

if(!empty($item->condition) && !empty($item->variable))
它将检查变量是否已设置,并检查是否可以使用空值

if(!empty($item->condition) && !empty($item->variable))

它将检查变量是否已设置并检查空值

如果显示如何传递$item,则效果会更好。尝试使用视图中的代码

 @foreach($item as $i)
if($i->condition && $i->variable)
{
//do something
} else {
//do something else
}
@endforeach

如果您显示如何传递$item,则会更好。尝试使用视图中的代码

 @foreach($item as $i)
if($i->condition && $i->variable)
{
//do something
} else {
//do something else
}
@endforeach

似乎
$item
不是
对象
,或者
为空
。您能否包含返回
$item
的代码?它是一个有说服力的
模型吗?似乎
$item
不是
对象
,或者是
null
。您能否包含返回
$item
的代码?这是一个有说服力的模式吗?