falling-ts 5年前

修改理由:

错别字

相关信息:


此投稿已在 5年前 合并。

内容修改:

红色背景 为原始内容

绿色背景 为新增或者修改的内容

OldNewDifferences
215215<a name="many-to-many"></a>
216216### 多对多
217217
218 多对多关联比 `hasOne` 和 `hasMany` 关联稍微复杂些。举个例子,一个用户可以拥有很多种角色,同时这些角色也被其他用户共享。例如,许多用户可能都有 「管理员」 这个角色。要定义这种关联,需要三个数据库表: `users`,`roles` 和 `role_user`。 `role_user` 表的命名是由关联的两个模型按照字母顺序来的,并且包含了 `user_id` 和 `role_id` 字段。
 218多对多关联比 `hasOne` 和 `hasMany` 关联稍微复杂些。举个例子,一个用户可以拥有很多种角色,同时这些角色也被其他用户共享。例如,许多用户可能都有 「管理员」 这个角色。要定义这种关联,需要三个数据库表: `users`,`roles` 和 `role_user`。 `role_user` 表的命名是由关联的两个模型按照字母顺序来的,并且包含了 `user_id` 和 `role_id` 字段。
219219
220220多对多关联通过调用 `belongsToMany` 这个内部方法返回的结果来定义,例如,我们在 `User` 模型中定义 `roles` 方法:
221221
 
236236       }
237237   }
238238
239 一旦关联关系被定义后,你可以通过 `roles` 动态属性获取用户角色:
 239一旦关联关系被定义后,你可以通过 `roles` 动态属性获取用户角色:
240240
241241   $user = App\User::find(1);
242242
 
248248
249249   $roles = App\User::find(1)->roles()->orderBy('name')->get();
250250
251 正如前面所提到的,为了确定关联连接表的表名,Eloquent 会按照字母顺序连接两个关联模型的名字。当然,你也可以不使用这种约定,传第二个参数到 `belongsToMany` 方法即可:
 251正如前面所提到的,为了确定关联连接表的表名,Eloquent 会按照字母顺序连接两个关联模型的名字。当然,你也可以不使用这种约定,传第二个参数到 `belongsToMany` 方法即可:
252252
253253   return $this->belongsToMany('App\Role', 'role_user');
254254
 
301301
302302#### 自定义 `pivot` 属性名称
303303
304 如前所,来自中间表的属性可以使用 `pivot` 属性访问。但是,你可以自由定制此属性的名称,以便更好的反应其在应用中的用途。
 304如前所,来自中间表的属性可以使用 `pivot` 属性访问。但是,你可以自由定制此属性的名称,以便更好的反应其在应用中的用途。
305305
306306例如,如果你的应用中包含可能订阅的用户,则用户与博客之间可能存在多对多的关系。如果是这种情况,你可能希望将中间表访问器命名为 `subscription` 取代 `pivot`。这可以在定义关系时使用 `as` 方法完成:
307307