私はコントローラが制御を行い、モデルがデータベースの処理を行うことを知っています。MVCプログラミングでは、モデルはどのくらいの距離を置く必要がありますか?
モデルの距離はどのくらいですか?
私が配列している場合:
array('first_name' => 'Thomas', 'second_name' => 'Clayson', 'email' => '[email protected]');
をそしてこれは、私はそれから抜け出すために必要なMySQLのクエリです:
INSERT INTO `users` (`name`, `email`) VALUES ("Thomas Clayson", "[email protected]");
私のモデルがどのように見えますか?
生データとフォーマットを取り、適切
public function insertUser($details){
if(!isset($details['first_name']) || !isset($details['second_name']) || !isset($details['email'])){
return false;
}
$full_name = $details['first_name']." ".$details['second_name'];
$email = $details['email'];
$query = "INSERT INTO `users` (`name`, `email`) VALUES ('".$full_name."', '".$email."')";
}
コントローラまでフォーマットし、ちょうど入力を取り、DBに盲目的に他の
public function insertUser($full_name = false, $email = false){
if(!$full_name || !$email){
return false;
}
$query = "INSERT INTO `users` (`name`, `email`) VALUES ('".$full_name."', '".$email."')";
}
何かをそれを置くを残しますか?
私の問題は、テーブルに入れるデータがたくさんあるため、各フィールドを関数の別の引数として持つことは本当にありません。しかし、私は、モデルに情報を並べると、各インデックスとフォーマットを適切にチェックする必要があるので、コントローラーでもそれほど重要なことはしません。仕事の2倍のようです。
しかし、もう一度、モデルでもそれをやっている気がしません!
他の人はどうしますか?
P.S.この問題は、コード・シグネチャ・フレームワークに基づいています(ただしこれに限定されません)。
モデルオブジェクトを使用して、対応するデータベーステーブルの単一のレコードを表現してみませんか?それぞれのフィールドを表すクラス変数を持ち、好きなときにいつでも設定することができます。 insert()メソッドは、それらの変数にあるものを挿入します。 – imm
うーん、音はそうです。私の質問は一般的なものでしたが、私はcodeigniterの使用に基づいていました。これは、その構造の機能性を持たないフレームワークです。あなたのソリューションは興味深いようですが、同時にcodeigniterがそれをサポートしていない場合、私はそれを行うより良い方法があると思いますか? –
私はCodeIgniterがこれを行うことを許可していると思います。モデルのドキュメントには、データベース内のフィールドを表すクラスレベルの変数があります。http://codeigniter.com/user_guide/general/models.html – imm