laravel 嵌套的渴求式加载
今天在通过需求表A查询场地类型表B,然后通过表B的场地类型id去查询表C场地类型名的时候遇到了一个小的问题。
需求表A的字段:id、user_id 、name等等;
中间表B的字段:id、appeal_id、field_type_id;
场地类型表C的字段:id、display_name等等;
Appeal模型中:
public function appeal_field_type() {
return $this->hasMany('App\Models\AppealFieldType');
}
public function field_type() {
return $this->belongsTo('App\Models\FieldType')->select('id','display_name');
}
Appeal控制器中;
$result = Appeal::select('id','name')
->where('id',$id)
->with('appeal_field_type.field_type')
->first();
以上都是看了laravel学院的嵌套的渴求式加载,然后按照他上面说的方法,模仿着写了一下,结果这个方法一直报错,报“field_type”方法不存在,一开始琢磨不透,看了一遍右边appeal模型,检查过单词有没有写错,有没有引入模型,等等,都检查过了,我就觉得不对啊,我就是严格按照学院上写的嵌套的渴求式加载,但是就是不对。后来,我想,既然appeal_field_type这个方法是通过关联模型访问的,那么是不是他还是要通过AppealFieldType这个模型,去访问field_type这个方法,果然,我把fiel_type方法写到AppealFielType模型中,再去访问的时候,成功~
最终成功的结果:
Appeal模型中:
public function appeal_field_type() {
return $this->hasMany('App\Models\AppealFieldType');
}
AppealFieldType模型中:
public function field_type() {
return $this->belongsTo('App\Models\FieldType')->select('id','display_name');
}
Appeal控制器中:
$result = Appeal::select('id','name')
->where('id',$id)
->with('appeal_field_type.field_type')
->first();
主要原因是学院上这一块讲的不是特别清楚,不知道后面的那个方法应该写在哪个控制器中,所以出现了这么一个困扰萌新的问题~
laravel 嵌套的渴求式加载的更多相关文章
- laravel with嵌套的渴求式加载
今天在通过需求表A查询场地类型表B,然后通过表B的场地类型id去查询表C场地类型名的时候遇到了一个小的问题. 需求表A的字段:id.user_id .name等等: 中间表B的字段:id.appeal ...
- Laravel渴求式加载(比较容易理解理解load与with关系)
渴求式加载 当以属性方式访问 Eloquent关联关系的时候,关联关系数据是「懒惰式加载」的,这意味着关联关系数据直到第一次访问的时候才被加载.不过,Eloquent 还可以在查询父级模型的同时「渴求 ...
- Laravel 5.2数据库--多个关联关系,带条件约束的渴求式加载的问题
### 今天在连表获取数据的时候,老是获取不到想要的,确实有点无力适从的感觉. 归根到底,还是对laravel不够熟悉,至少是数据库操作那块. ### 问题是这样的: 我想要通过连表中间表,拿中间表的 ...
- laravel with 渴求式加载指定字段
在使用 Laravel 的关联查询中,我们经常使用 with 方法来避免 N+1 查询,但是 with 会将目标关联的所有字段全部查询出来,对于有强迫症的我们来说,当然是不允许的. 这时候我们可以使用 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (28) ------ 第五章 加载实体和导航属性之测试实体是否加载与显式加载关联实体
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-11 测试实体引用或实体集合是否加载 问题 你想测试关联实体或实体集合是否已经 ...
- 【EF学习笔记08】----------加载关联表的数据 显式加载
显式加载 讲解之前,先来看一下我们的数据库结构:班级表 学生表 加载从表集合类型 //显示加载 Console.WriteLine("=========查询集合===========&quo ...
- dll显式加载与隐式加载
使用动态DLL有两种方法,一种是隐式链接,一种是显式链接,如果用loadlibrary就是显示链接,用lib就属于隐式链接. 两种方法对于你的程序调用动态库时没有任何区别,只是你在编程时,步骤是不一样 ...
- 用video标签流式加载
video标签 浏览器的video标签通常是接收一个src属性,然后浏览器就会根据这个src属性来自动加载视频.这个过程是浏览器来加载video的. 这种方式有什么问题吗? mp4文件不能流式加载 w ...
- 带你剖析WebGis的世界奥秘----瓦片式加载地图(转)
带你剖析WebGis的世界奥秘----瓦片式加载地图 转:https://zxhtom.oschina.io/zxh/20160805.html 编程 java 2016/08/05 0留言, ...
随机推荐
- 张高兴的 Windows 10 IoT 开发笔记:三轴数字罗盘 HMC5883L
注意,数据不包含校验,准确的来说我不知道怎么校验,但方向看起来差不多是对的... GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tre ...
- Windows下MongoDB常用命令
以下命令中的启动与暂停服务命令需要使用管理员身份运行cmd.exe,其他命令需要先cd到Mongodb安装目录的bin目录. 1.启动服务:net start [Mongodb服务名].示例: net ...
- log4j 和slf4j的比较
log4j 和slf4j的比较 slf4j 官网:https://www.slf4j.org/manual.html slf4j(simple logging facade for java)是Jav ...
- Debian GNU/Linux 8.4 (jessie)编译安装php.md
编译遇到的问题很多.网上的文章往往是记录遇到的报错,贴上对应的解决. 而实际的环境,如操作系统,安装的软件必然有差异,所以,更重要的是,如何找到解决方法(不担保按步骤做可以编译成功),并将过程自动化. ...
- PHP基础入门详解(一)【世界上最好用的编程语言】
简介 --------- PHP(超文本预处器)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域.PHP 独特的语法混合了C.Ja ...
- 博客迁移至 http://www.loveli.site
对于博客园的Markdow 支持太过...,你懂的, 以后博客迁移至:http://www.loveli.site
- Java基础笔记2
1. 变量的定义 int money; int 变量类型 money 变量名 money=1000;变量的值 2. 自动类型转换 ①类型要兼容 容器 (水杯---竹篮---碗) ②目标类型 ...
- Ant 基本语法的使用示列
ant -f build.xml 执行你的build.xml文件 <?xml version = "1.0"?> <project name = " ...
- zookeeper启动异常
zookeeper启动报异常 java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:392) 遇到 ...
- FatMouse and Cheese
FatMouse and Cheese Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...