2017-10-18 110 views
0

我的目标是处理这些错误。我知道这个错误是在查询返回值为null时产生的。在Laravel旁路“尝试获取非对象的属性”错误

我通过使用下面的代码得到trying to get property of non-object错误。

foreach($furniture as $fur) 
{ 
    Furniture Name: {{$fur->fur_name}} 
    Furniture Country : {{ App\Country::where('id', $fur->country_id)->first()->country_name }} 
} 

经过在互联网上的一些研究,我使用下面的代码,但仍然不成功,错误仍然存​​在。

foreach($furniture as $fur) 
{ 
    Furniture Name: $fur->fur_name 
    Furniture Country : {{ App\Country::where('id', $fur->country_id)->first()->country_name ? App\Country::where('id', $fur->country_id)->first()->country_name : "null/no record"}} 
} 

回答

0

尝试以下操作:

foreach($furniture as $fur) 
{ 
    Furniture Name: $fur->fur_name 
    Furniture Country : {{ App\Country::where('id', $fur->country_id)->first() ? App\Country::where('id', $fur->country_id)->first()->country_name : "null/no record"}} 
} 

它不建议直接运行的查询从您的观点。相反,将查询移入控制器并将结果传递给视图。

+0

直向前的解决方案,这正是我正在寻找的。谢谢你的建议。 – learnprogramming

0

更简单的方法(需要的PHP 7. *):

foreach($furniture as $fur) 
{ 
    Furniture Name: $fur->fur_name 
    Furniture Country : {{ App\Country::where('id', $fur->country_id)->first()->country_name ?? "No record" }} 
} 

??是一个空合并运算符需要结合isset()使用三元组的常见情况。

请注意@Camilo表示,不建议直接从您的视图中运行查询,而是将其重定位到您的控制器中,并且仅在您的视图中通过结果

相关问题