Kohana ORM エイリアシングと「非オブジェクトのプロパティを取得しようとしている」
-
26-09-2019 - |
質問
データベースに次のテーブルがあります。
- チーム:
- ID
- 名前
- 一致します:
- ID
- チーム1_id
- チーム2_id
次のように定義しました ORM 私の中のモデル コハナ 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; /* <-- */
でマークされたリンクで次のエラーがスローされます /* <--- */
:
非オブジェクトのプロパティを取得しようとしています
フレームワークは、本来の Match_Model インスタンスへの参照の代わりに、外部キーの値を生成しています (has_many プロパティとbelongs_to プロパティが指定されている)。
何かが足りないのでしょうか?
注記:念のため、不規則複数形を追加しました 'match' => 'matches'
application/config/inflector.php 内
解決
を解決しよう!のKohanaのコミュニティが私に与えた答え>
プロパティbelongs_toの$の正しい値は次のとおりです。
class Match_Model extends ORM {
protected $belongs_to = array('team1' => 'team', 'team2' => 'team');
}
、それを述べのドキュメンテーションます:
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に存在する値を持っています。
これは、私はその行を見逃しているようだ:)
所属していません StackOverflow