我有一个存储“任务”数据的CakePHP应用程序。每次创建新任务时,都会读取静态输入文件,并将592条新记录插入到“任务”表中。基本上,一个列是由永久数据填充的。我把它做得很好。模型代码如下所示:
public function importCSV($csv_name) {
$sql = "LOAD DATA INFILE '{$csv_name}' INTO TABLE missions
LINES TERMINATED BY '\r'
(or_identity)";
$this->query($sql);
}这是控制器代码:
public function add() {
if($this->request->is('post')) {
$this->Requirement->create();
$csv_name = /path/to/csv/file
if($this->Requirement->save($this->request->data)) {
$this->Requirement->importCSV($csv_name);
$this->Session->setFlash(__('The new mission has been created.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->SetFlash(__('Unable to create mission.'));
}
}
}视图中的...and用户输入:
echo $this->Form->input('mission_id', array('type' => 'textbox', 'label' => 'Mission ID (Ex: OA-5)'));当用户创建一个新的任务时,他们需要输入一个任务ID,这将类似于“OA-5”。该任务ID位于“任务”表的自己的列中。我不知道如何做的是确保任务ID与592个新记录一起插入。它需要在那里形成一个连接的密钥。如何修改我的方法以允许这样做?
发布于 2016-01-26 15:55:10
只需将其插入同一个SQL调用中即可。可以向查询中添加其他字段。有关如何执行此操作,请参见在使用LOAD数据本地INFILE时添加额外的数据列。有关更多信息,检查手册。
摘自手册:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name,...)]
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number {LINES | ROWS}]
[(col_name_or_user_var,...)]
[SET col_name = expr,...]https://stackoverflow.com/questions/35016419
复制相似问题