使用Eloquent手动注入模型关系

时间:2015-07-08 09:42:21

标签: laravel eloquent laravel-5 laravel-5.1

如何将模型添加到另一个模型的关系数组中?

E.g。

  • Domain belongsTo Owner。
  • 所有者拥有一个域名。
  • 我有$ domain(域的实例)。
  • 我有$ owner(所有者的实例)。

我想将$domain添加到$owner->relations[],以便我稍后可以在我的代码中使用$owner->domain

这样做的原因是,在一个特定的控制器中,我只需要每个模型的部分数据集,因此出于性能原因使用流畅的查询和填充,然后填充模型。

为了便于阅读,我想使用$owner->domain->id

$domain->owner()->associate($owner);为我提供了$domain->owner选项

但是我无法解决相反的版本

$owner->domain()->associate($domain)
$owner->domain()->attach($domain)

都会导致以下致命错误

  

调用未定义的方法Illuminate \ Database \ Query \ Builder :: [attach | associate]()

注意:我不想保存任何东西,因为我已经加载了我需要的所有数据。

1 个答案:

答案 0 :(得分:19)

setRelation()应该有效。它只是设置relations数组中的值。

$owner->setRelation('domain', $domain);