Phalcon 3.0.1 を使用して小さなプロジェクトを構築していて、2 つのテーブル間で ORM モデルの関係を使用する方法を学びましたが、最初に関連テーブルからデータを結合する際に最初の問題が発生しました。これらのテーブルの SQL コードは次のとおりです。
CREATE TABLE `jobs` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
`categories_id` int(11) unsigned NOT NULL,
`location` varchar(255) NOT NULL,
`description` text NOT NULL,
`how_to_apply` text NOT NULL,
`author` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`),
KEY `fk_categories` (`categories_id`),
CONSTRAINT `jobs_ibfk_1` FOREIGN KEY (`categories_id`) REFERENCES `categories` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='utf8_general_ci'
CREATE TABLE `categories` (
`id` int(11) unsigned NOT NULL,
`category_name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='utf8_general_ci'
Jobs には、カテゴリ (categories_id) の外部キーがあります。今、私のカテゴリモデルで次のような関係を初期化しようとしています:
public function initialize()
{
$this->hasManay('id', 'Jobs', 'categories_id', ['alias' => 'Jobs']);
}
現在、find メソッドを呼び出すとCategories::find()
、Jobs テーブルから関連データが返されません。また、メソッド内にばかげたものを入れることができ、hasMany()
例外をキャッチすることさえできないことに気付きました。完全に無視されているようです。以下のようなこともできますが、クラッシュしません。
public function initialize()
{
$this->hasManay('stupid', 'Doesnt_exist_table', 'more_stupid', ['alias' => 'Jobs']);
}
また、モデルのすべてのプロパティが公開されていることを概説したいと思います。私はすべてのドキュメント、その他のスタックオーバーフローの質問、github の例を調べましたが、うまくいくと思います。私はそれについて怒っているので、どんな助けでも感謝します。