使用Eloquent手动注入模型关系

Ben*_*rne 13 laravel eloquent laravel-5 laravel-5.1

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

例如

  • 域名属于所有者.
  • 所有者拥有一个域名.
  • 我有$ domain(域的实例).
  • 我有$ owner(所有者的实例).

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

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

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

$domain->owner()->associate($owner);给了我一个$domain->owner选择

但后来我无法解决相反的版本

$owner->domain()->associate($domain)
$owner->domain()->attach($domain)
Run Code Online (Sandbox Code Playgroud)

两者都会导致以下致命错误

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

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

luk*_*ter 24

setRelation()应该管用.它只是设置relations数组中的值.

$owner->setRelation('domain', $domain);
Run Code Online (Sandbox Code Playgroud)