php - laravel 使用orm时运用渴求式加载with方法,怎么在多条件中使用with方法

查看:166
本文介绍了php - laravel 使用orm时运用渴求式加载with方法,怎么在多条件中使用with方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

例子如下:我需要根据不同条件加载不同关联关系数据,有一张表A,里面有字段relationId、type等,type包括多种,如:'article','problem','comment'等,我需要根据type不同的类型加载关联数据,例如需要根据A表中的字段type是article来使用with('article')来加载article的数据,type为problem同上,代码:A::where('type', 'article')->with('article'),A::where('type', 'problem')->with('problem'),怎么让这两个合起来放到一起,请大神帮忙解决一下!

解决方案

找了一些下午,最后发现还是自己没有认真阅读理解laravel文档,这个问题属于多态关系,一下午就跳进这个坑了,至于怎么做去看laravel文档吧,我就不细说了。但是我这儿要分享一下我下午踩坑获得的体会与经验,对于多态关系,我百度了一下,几乎都和laravel文档里面给的例子差不多,没有一些详解,对于MorphTo()方法的参数没有说明,于是我查了下laravel api,英文不怎么好的我还是看懂了的:),MorphTo方法有三个参数:第一个是这个多态关系你要一个命名,不给就默认是方法名;第二个是自定义type类型,数据库表里那个代表类型的字段名,这个type字段的值是类名,例如:App\Photo(要加上App哦!);第三个参数就关联其他表的id的那个字段名;我还是粘一下代码帮助理解:

/**
* 数据库字段是id,userId,dynamicRelationId,type
*/
public function dynamicRelation(){
        return $this->morphTo('dynamicRelation', 'type', 'dynamicRelationId');
    }

希望对大家有帮助!

这篇关于php - laravel 使用orm时运用渴求式加载with方法,怎么在多条件中使用with方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆