gpt4 book ai didi

php - 具有多个一对多到同一张表的 Eloquent 模型

转载 作者:行者123 更新时间:2023-11-29 00:12:15 25 4
gpt4 key购买 nike

我有一个现有的表结构,我正在尝试使用 Eloquent (Laravel 4) 建模,它与同一个表有 3 个一对多关系。基本上,每个单元都可以有家庭位置、当前位置和客户位置。

请注意,我已针对问题简化了这一点。单元表有一个 unitid、一个 homeid、currentid 和 customerid。 homeid、currentid、customerid都是mysql数据库中locationid上location表的外键。位置表也有一个名称字段。

在我的单元模型中,我有

public function home() { return $this->belongsTo('Location', 'homeid', 'locationid'); }
public function current() { return $this->belongsTo('Location', 'currentid', 'locationid'); }
public function customer() { return $this->belongsTo('Location', 'customerid', 'locationid'); }

在我的 Location 模型中有

public function homes() { return $this->hasMany('Unit', 'homeid', 'locationid'); }
public function currents() { return $this->hasMany('Unit', 'currentid', 'locationid'); }
public function customers() { return $this->hasMany('Unit', 'customerid', 'locationid'); }

现在,在我的 Units Controller 中我有

$units = Unit::with(['home','current','customer'])->paginate(10);
return View::make('units.index')->with('units',$units);

在units.index View 中我可以引用

foreach ($units as $unit) { 
...
$unit->home->name //<-- this works
$unit->current->name //<-- this doesn't
$unit->customer->name //<-- neither does this
...
}

据我所知,从文档中可以看出,我所做的一切都是正确的。为什么第一个 FK 有效,但其他两个都无效?

编辑:标记为无效的行(未注释时)给出的错误是

“试图获取非对象的属性”

最佳答案

模型是正确的,感谢@deczo 指出显而易见的地方。

错误是我的 - 在尝试引用相关记录之前没有检查关系是否为空。

即$unit->current->name 需要是 is_null($unit->curent)?'':$unit->current->name

一个愚蠢的 PEBKAC 错误 :-)

--库格

关于php - 具有多个一对多到同一张表的 Eloquent 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24490324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com