在创建之后直接加载多态关系

时间:2015-11-03 14:48:50

标签: model laravel-5 eloquent polymorphic-associations

我有Project模型,hasMany Node模型。 Node模型是可变形的:

public function nodeable()
{
   return $this->morphTo();
}

它可以变为Text模型或Video模型。

示例:

public function node()
{
   return $this->morphOne(Node::class, 'nodeable');
}

这一切都很完美,我目前的一个问题是我需要在创建nodeable之后直接检索Node模型。例如:

$project = factory(\App\Project::class)->create();
$video = factory(\App\Video::class)->create();
$node = new App\Node;
$project->nodes()->save($node);
$video->node()->save($node);

现在我需要return新创建的Node及其nodeable关系模型。

这样做的一种方法是:

return App\Node::with('nodeable')->find($node->id)

工作正常,但正如你所看到的,我正在查询数据库,从技术上讲,创建模型时我所需要的一切都应该是可访问的,对吧?

是否不能仅返回nodeable模型而不必为其执行单独的查询?

0 个答案:

没有答案