我有一个模型class Account extends Model
{
public function users()
{
return $this->hasMany('\App\User', 'account_id', 'id');
}
/**
* @return integer[]
*/
public function getUserIds()
{
return $this->users()->getQuery()->select('id')->pluck('id');
}
和一个模型House
。
房子只有一个能量等级。能源类可以分配给多个房屋。因此我定义了这样的关系:
House.php
energy_class
energy_class.php
class House extends Model
{
public function energy_class()
{
return $this->hasOne('App\energy_class', 'id', 'energy_class');
}
}
将众议院数据传递给这样的视图时:
class energy_class extends Model
{
public function house()
{
return $this->belongsToMany('App\House');
}
}
并在这样的视图上引用它:
$house = House::with('energy_class')->find($id);
return view('admin.houses.edit')->with('house', $house);
我收到此错误:$house->energy_class()->name
当这样做时:Undefined property: Illuminate\Database\Eloquent\Relations\HasOne::$name
我得到$house->energy_class->name
答案 0 :(得分:2)
您的第一个建议:
$house->energy_class()->name
不起作用,因为此时你只调用了这种关系,你还没有从中指定你想要的东西,例如:
$house->energy_class()->first()
你的第二次尝试返回空,因为$ house-> energy_class(与上面的代码相同),没有返回任何结果。
可能有多种原因:
我怀疑你的情况可能是第二次或第三次。你能粘贴我的迁移脚本吗?
编辑:PS。如果发生此错误,因为可能并非每个房子实际上都有能量等级,您可以使用以下代码来检查:
$house->energy_class ? $house->energy_class->name : "No energy class available";