zoukankan      html  css  js  c++  java
  • laravel with嵌套的渴求式加载

    今天在通过需求表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('AppModelsAppealFieldType');
    }
    public function field_type() {
    return $this->belongsTo('AppModelsFieldType')->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('AppModelsAppealFieldType');
    }

    AppealFieldType模型中:

    public function field_type() {
    return $this->belongsTo('AppModelsFieldType')->select('id','display_name');
    }

    Appeal控制器中:

    $result = Appeal::select('id','name')
    ->where('id',$id)
    ->with('appeal_field_type.field_type')
    ->first();

    主要原因是学院上这一块讲的不是特别清楚,不知道后面的那个方法应该写在哪个控制器中,所以出现了这么一个困扰萌新的问题~


  • 相关阅读:
    启动ASM 数据库的步骤
    ora15031 DBCA找不到ASM磁盘组
    ORA12514 解决方法
    Rhel Linux 5.1 (32 位)上安装 Oracle ASM数据库 11g 第 1 版
    Oracle ASM for linx as 4 x8664 创建过程
    在安腾AI64 RHEL3 U3服务器上安装ORACLE10G
    ora12528 : message 12528 not found; product=RDBMS ; facility=ora
    linux下启动oracle服务和监听程序
    linux内核升级RPM包安装问题!!!!
    AS4 下安装Oracle 10g(ASM & RAW)
  • 原文地址:https://www.cnblogs.com/x-x-j/p/7172046.html
Copyright © 2011-2022 走看看