Lendrチュートリアルに従って、Joomla 3.2 コンポーネントを作成しています。すべてのデータベース列を保護フィールドとしてモデルに追加し(ヘルパーの get/set 関数を使用して操作します)、CRUD 操作を関数として追加しているようです。それらのテーブル クラスには、コンストラクターのみが含まれています。
function __construct( &$db ) {
parent::__construct('#__lendr_books', 'book_id', $db);
}
アイテムを取得または保存するとき、モデルの更新されたバージョンではなく、テーブル クラスのインスタンスを返します。たとえば、新しいアイテムを保存した場合、モデルの保護された ID フィールドはゼロになりますが、返されたテーブル オブジェクトは非ゼロになります。
したがって、すべての列をモデルに配置することは意味がありません。テーブル クラスで明示的に宣言するか、モデルでそれらを更新し続け、テーブル オブジェクトを返さない方がよいでしょう。
Joomla に組み込まれているコンポーネントは、新しい MVC 規則を使用しておらず、CRUD 操作以外の場所でショーのいたるところにあるようです。
非レガシーMVCクラスを使用して、Joomla 3.2でモデルが何をすべきか、テーブルが何をすべきかについて明確な定義はありますか?