创建具有多种关系的 eloquent 实例?
Posted
技术标签:
【中文标题】创建具有多种关系的 eloquent 实例?【英文标题】:Creating instance of eloquent with multiple relationships? 【发布时间】:2016-04-22 10:56:32 【问题描述】:我有 3 个模型: 插件、评论和用户。
用户是插件的父级。在一对多的关系中,我可以轻松地创建一个与用户关联的插件:
$user->plugins()->create([...options...]);
但现在我的问题是:评论是用户和插件的孩子。如何在不手动设置一个 ID 的情况下使用 User 和 Plugin 创建评论?
【问题讨论】:
【参考方案1】:假设一个评论属于一个用户和一个插件,你可以使用关系的associate()
方法来设置外键。请注意,此方法仅在对象上设置适当的属性;您仍然需要save()
对象来更新数据库。
这是一个例子:
$plugin = $user->plugins()->create([...plugin options...]);
// instantiate a new review instance
$review = new \App\Review([...review options...]);
// set the user association
$review->user()->associate($user);
// set the plugin association
$review->plugin()->associate($plugin);
// save the entire record to the database
$review->save();
【讨论】:
工作,谢谢!这正是我正在寻找的:) 是否可以在创建时关联多个模型?我与外国人有 2 条关系,它们都不能为空,如果我尝试使用关联创建模型而不提供另一个相关记录 ID,则会出错。以上是关于创建具有多种关系的 eloquent 实例?的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5 - Eloquent:过滤多种关系的简单方法
如何在 Laravel Eloquent 中构建具有多级关系的查询