代码之家  ›  专栏  ›  技术社区  ›  mmutilva

Kohana ORM别名和“尝试获取非对象的属性”

  •  0
  • mmutilva  · 技术社区  · 16 年前

    我在数据库中有以下表格:

    • 团队:
      • 身份证件
      • 名称
    • 比赛:
      • 身份证件
      • 团队成员
      • Tea2SyID

    我已经定义了以下内容 ORM 我的模特 Kohana V2.3.4应用:

    class Match_Model extends ORM {
      protected $belongs_to = array('team1_id' => 'team', 'team2_id' => 'team');
    }
    
    class Team_Model extends ORM {
      protected $has_many = array('matches');
    }
    

    控制器中的以下代码:

    $match = ORM::factory('match',1);
    echo $match->team1_id->name; /* <-- */
    

    在标记为的链接上引发以下错误 /* <--- */ :

    正在尝试获取非对象的属性

    框架生成的是外键的值,而不是对匹配的\模型实例的引用(赋予has_many并属于所述属性)。

    我错过什么了吗?

    注:以防万一,我加了不规则复数 'match' => 'matches' 在application/config/inflector.php中

    1 回复  |  直到 16 年前
        1
  •  0
  •   mmutilva    16 年前

    解决了的! 科哈纳社区给了我 answer :

    $所属属性的正确值是:

    class Match_Model extends ORM {
      protected $belongs_to = array('team1' => 'team', 'team2' => 'team');
    }
    

    这个 documentation 声明:

    class Blog_Post_Model extends ORM { 
        protected $belongs_to = array('author' => 'user', 'editor' => 'user'); 
    }
    

    blog-posts数据库表将 现在有两列, blog_posts.author_id和 blog_posts.editor_id,两者都可以 具有users.id中存在的值。

    我好像错过了那条线,:)

    推荐文章