PDO を使用して幅の広いテーブルにレコードを挿入する際の近道はありますか?
これまで、列と値のペアの配列を受け取り、挿入されたレコードの PK を返す Zend_Db_Table を使用してきました。
PDO では、PDOStatement を準備するときにすべてのフィールドを挿入ステートメントにリストし、実行時にすべての値を配列に入力する必要があるようです。遠回りに見えますか?または、何か不足していますか?(「ORM」とは言わないでください)...
ありがとう...
データベース列にデフォルト値を指定すると、挿入時に明示的に値を指定する必要はありません。列を除外すると、デフォルト値が取得されます。
ただし、これには注意してください。暗黙の動作は、予期しないときに戻ってきて噛まれる傾向があります。現在行っているようにすべての列を明示的に指定すると、6 か月後に戻ってソース コードを見たときに、何が挿入されているかが明確になるという利点があります。
私があなたの意味を理解していれば。MySQL を使用している場合は、次のようなカスタム挿入ステートメントを作成できます。わかりました、これを行う最善の方法ではありませんが、とにかく..
$data = array(
'col1' => 'value1',
'col2' => 'value2',
'col3' => 'value3',
'coln' => 'valuen',
'col1000' => 'value10000'
);
insert into mytable ('.join(',', array_keys($data)).') values ("'.join('", "', $data).'");