添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
爽快的四季豆  ·  Exploring ...·  6 月前    · 
年轻有为的茄子  ·  设计大赛·  6 月前    · 

描述多对多关系

相对于前面所讲的一对一和一对多(反向多对一)关系,多对多涉及到一个新的方法:belongsToMany,其含义为【属于多个】。多对多关系的表述中,将不再使用hasMany来表达。

举个例子:一个用户可以有多个角色,一个角色也可以有多个用户。此时我们在两个model中都使用belongsToMany来建立关联关系,即:一个用户被多个角色所拥有,一个角色也被多个用户所拥有。

  • 参数 1 ,属于的类名,仍然建议使用 ::class语法 ,不要使用字符串;
  • 参数 2 :指定二者建立关联的中间表名,eloquent默认使用model 1_model1的规则联想表明 两个model按照字母顺序排序
  • 参数 3 :当前model在关联关系中的外键名;
  • 参数 4 :关联的另一个model的外键名。
  • benlongs ToMany的参数可以直接全部使用默认值 ,当然需要按照规范创建表名和字段名。
  • 多对多关系中的支点

    多对多关系中的中间表就是一个 支点 ,通过此支点建立两个表之间的多对多关系。

    查询多对多关系中的一个model实例时,会发现其带有一个pivot字段。默认pivot包含两个字段,即:两个外键字段。如果实际中间表除了两个外键之外还包含其他字段,并且你想在model的查询结果实例中包含此字段,则需要在belongsToMany之后使用withPivot方法表明你想要包含的支点的字段,比如:

    当然有些时候你不想使用pivot这样抽象的字段名来访问支点数据,比如使用subscription这样具体的词来描述一个多对多的订阅关系,那么可以使用as方法来给支字段改名:

  • SSH——非对称加密的网络安全实践
  • 基础概念——http/https/ssh/ssl/tls——这些基础概念都不理解,还做什么web开发
  • CGI——web server实现动态请求的传统基础协议
  • Fast CGI——cgi方案的替代者
  • phpDocs——躲在角落里的核心特性
  • 自建request——request获取参数的另一个姿势
  • 表单验证——为什么不要用HttpRequest的validate方法?
  • php基础概念——phar是什么?
  • php基础概念——异常处理和错误处理
  • php基础——日期和时间操作,这一篇就够了
  • php基础概念——php的扩展和类库
  • 自己实现简单枚举——给php接上枚举这条断腿
  • web开发基础概念——正向代理和反向代理
  • eloquent模型关联关系——一对一
  • eloquent模型关联关系——一对多或多对一
  • eloquent模型关联关系——多对多
  • 告别原始的PHP数组——laravel集合和eloquent集合
  • 缓存(cache)基础——laravel中1分钟实现缓存
  • laravel项目配置基础——env和config
  • 简单的语法,强大的引擎——laravel日志入门
  • 任务调度——使用laravel更方便地执行计划任务
  • 严禁滥用数组——高阶phper的第一步
  • xdebug——php现代化和工程化开发的基础设施
  • (php5.6)phpstorm xdebug远程调试docker中的项目
  • 访问器和修改器——看laravel中如何优雅实现getter和setter
  • 单元测试——看似无用,实有大用
  • expect——实现远程服务的自动部署
  • 使用IDEA实现本地代码和FTP远程文件同步
  • 使用live template提升30%开发效率
  • 同步idea/phpStorm/webStorm/pycharm配置
  • 代码提示取消大小写敏感
  • 优化导入 optimize imports
  • inspect code——代码检查的火眼金睛
  • refactor move class——重构命名空间
  • 即时搜索——一个小功能亦是一个大功能
  •