对于应该是一个相当简单的问题感到困惑。
我有两个彼此相关的对象:
class Country extends Eloquent {
public function hotspot()
{
return $this->hasOne('Hotspot');
}
}
和
class Hotspot extends Eloquent {
public function country()
{
return $this->belongsTo('Country');
}
}
我想检索我的热点及其所属的国家/地区,所以:
$hotspot_list = Hotspot::with('country')->get();
作为测试,我只想循环遍历列表并输出国家/地区代码:
foreach ($hotspot_list as $hotspot_item) {
$hotspot = $hotspot_item->country;
echo $hotspot->country_code;
}
引发错误:“试图获取非对象的属性”
显然我也做不到echo $hotspot_item->country->country_code;
如果我将$ hotspot作为数组访问,它的工作原理为:echo $hotspot['country_code'];
因此,我无法访问$ hotspot作为对象。由于$ hotspot实际上是一个Country对象,我想检查我与Country的另一个关系,但我不能,因为它给了我一个数组而不是对象。
所以即使我不应该这样做,我试过这个:
$country_id = $hotspot['id'];
$country = Country::find($country_id);
echo $country->name;
仍然没有,它仍然作为一个数组返回,所以我可以做echo $country['name'];
建议?
答案 0 :(得分:0)
确保所有热点都有国家/地区,或者您可以在循环播放时对其进行验证...
foreach ($hotspot_list as $hotspot_item) {
$hotspot = $hotspot_item->country;
if(isset($hotspot->country_code)) {
echo $hotspot->country_code;
}
}
如果你有Laravel 4.1,那就更好了,只有那些拥有热点的国家...
$hotspot_list = Hotspot::has('country')->get();