2017-02-24 9 views
0

私はこの種の質問が異なるトピックで尋ねられていることを知っています。 CodeIgniterに精通している方は、コントローラからデータベースにレコードを挿入するためのモデル内のパラメータを持つメソッドが必要であることはご存じでしょう。私のケースでは、挿入したいレコードが多すぎますし、パラメータが必要な制限値を超えているようですが、それがあればそれは疑わしいですが、汚い作業のように見えます。提案や改善がある場合は、以下のコードを参考にしてください。私はとても感謝しています。ありがとうございました。あまりにも多くのパラメータを持つメソッドの代わりに

public function create_cv($created_by, $fullname = '', $mobile = '', $email = '', $summary = '', $career_obj = '', $personal_skill = '',$experience1 = '', $position1 = '',$duration1 = '', $experience2 = '', $position2 = '', $duration2 = '', $experience3 = '', $position3 = '', $duration3 = '', $degree_course1 = '', $institution1 = '', $degree_duration1 = '', $degree_course2 = '', $institution2 = '',$degree_duration2 = '', $degree_course3 = '', $institution3 = '',$degree_duration3 = '', $skils = '', $linguistic_skills = '', $certificates = '', $hobbies = '', $refrees = '') { 
    $data = array(
     'created_by' => $created_by, 
     'fullname' => $fullname, 
     'mobile' => $mobile, 
     'email' => $email, 
     'summary' => $summary, 
     'career_obj' => $career_obj, 
     'perosnal_skill' => $personal_skill, 
     'experience1' => $experience1, 
     'position1' => $position1, 
     'duration1' => $duration1, 
     'experience2' => $experience2, 
     'position2' => $position2, 
     'duration2' => $duration2, 
     'experience3' => $experience3, 
     'position3' => $position3, 
     'duration3' => $duration3, 
     'degree_course1' => $degree_course1, 
     'institution1' => $institution1, 
     'degree_duration1' => $degree_duration1, 
     'degree_course2' => $degree_course2, 
     'institution2' => $institution2, 
     'degree_duration2' => $degree_duration2, 
     'degree_course3' => $degree_course3, 
     'institution3' => $institution3, 
     'degree_duration3' => $degree_duration3, 
     'skills' => $skils, 
     'linguistic_skills' => $linguistic_skills, 
     'certificates' => $certificates, 
     'hobbies' => $hobbies, 
     'refrees' => $refrees, 
    ); 
    $this->db->insert('users', $data); 
} 

私は肯定的な結果が得られることを願っています。再び おかげで:)

UPDATE:それは今扱わましみんなありがとう:私はコードスニペットに

UPDATEをこの$this->db->insert('users', $data);を追加しました。あなたの答えは大いに役立ちました。

+1

だろう! – Jeff

+0

[おそらくドメインオブジェクトまたはデータ転送オブジェクトを作成する必要があります](http://stackoverflow.com/questions/3853749/what-is-the-difference-between-an-mvc-model-object-a-domain-object -and-a-dto)を渡します。 [検証はあなた次第です。](http://avenir.ro/how-to-handle-security-in-post-orget-using-codeigniter/) – ourmandave

+0

ちょっとしたデザイン思考:私はこれらはネストされた配列として( '経験'、 '位置'、 '継続時間')。データベースとオブジェクトで処理する方が簡単です。実際に繰り返される構造である任意のアイテムに似ています。データ構造を変更することなく、余分なタプル(行)を追加することは簡単ですか? –

答えて

0

なぜオブジェクトとして渡せませんか?あなたがそのように試してみてください

$obj = new stdClass(); 
// Assign properties (parameters) 
$obj->email = "[email protected]" 
// Call function 
create_cv($obj); 
+0

オブジェクトを作成するとデータは$ data = array( 'email' => $ obj-> email、insted $ data = array( 'email' => $ obj ['email'] –

+0

のようになります。 – ThatAwesomeCoder

+0

おかげです。 –

1

:メソッドのようなものと呼ばれる

public function create_cv($obj) { 
    $data = array('email' => $obj->email, 
    ...); 
} 

public function create_cv($cvs) { 
    $data = [ 
     'created_by' => $cvs['created_by'], 
     'fullname' => $cvs['fullname'], 
     'mobile'  => $cvs['mobile'] 
    ]; 
} 

これはすべてのレコードで同様です。それを行うには

0

一つの方法は、単にアレイとして完全なデータセットを渡し

public function create_cv ($args) { 
    $defaults = array (
     // your default values go here 
     ); 
    $data = array_merge($defaults, $args); 
    // if you need single variables 
    extract($data, EXTR_SKIP); 
} 
関連する問題