【问题标题】:Kohana ORM Aliasing and "Trying to get property of non-object"Kohana ORM 别名和“试图获取非对象的属性”
【发布时间】:2010-05-11 19:12:00
【问题描述】:

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

  • 团队:
    • 身份证
    • 姓名
  • 匹配:
    • 身份证
    • team1_id
    • team2_id

我在Kohana v2.3.4 应用程序中定义了以下ORM 模型:

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; /* <-- */

在标有/* &lt;--- */的链接上抛出以下错误:

试图获取非对象的属性

框架正在生成外键的值,而不是它应有的对 Match_Model 实例的引用(给出所声明的 has_many 和 belongs_to 属性)。

我错过了什么吗?

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

【问题讨论】:

  • 你用的是KO2还是KO3?我不太了解 KO2,但在 KO3 中,这些实例变量前面带有下划线(即 _belongs_to、_has_many)。
  • 谢谢。我已将 kohana 版本添加到问题中。-
  • 您是否在$match 上尝试过print_r 以查看该变量中的确切内容?
  • 我已经尝试过 Kohana::debug($match) 并且我可以看到 $match->team1_id 只包含一个数值(该列中存储在数据库中的值)

标签: php kohana kohana-orm


【解决方案1】:

已解决! Kohana 社区给了我answer

$belongs_to 属性的正确值为:

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 数据库表将 现在有2列, blog_posts.author_id 和 blog_posts.editor_id,两者都会 具有 users.id 中存在的值。

我好像错过了那行,:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-03
    • 2019-05-23
    • 2019-07-11
    • 1970-01-01
    • 2019-12-13
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多