Laravel-如何一次更新多行表



我有一个名为$projectFieldOptions的变量,它的输出如下:

https://prnt.sc/7HtxrfTy9HiI.

现在,在控制器中,我需要更新这个。我正在做的是,首先删除基于id_feedid_project的所有现有行,然后循环通过这个变量$projectFieldOptions并插入它

if( $request->feed_type !== 'scrape' ) { 
$delete_mapping = DB::connection($db_name)->table($db_name . '.feed_mappings')
->where('id_feed', '=', $id_feed)
->where('id_project', '=', $token)
->delete();
}
// now insert 
$field_mapping = true;
if( $request->feed_type !== 'scrape' ) { 
if( count($projectFieldOptions) ) {
foreach ($projectFieldOptions as $mapping) {
$data[] = [
'id_feed'       => $id_feed,
'id_project'    => $token,
'import_field_slug' => $mapping['value'],
'internal_field_slug' => $mapping['custom'] ? $mapping['custom_field'] : $mapping['text'],
'custom_field'  => $mapping['custom'],
'updates'   =>  $mapping['updates'],
'removes'   =>  $mapping['removes'],
'import'        => 1,
'date_add'      => now(),
'date_upd'      => now()
];
}
} else {
$data = [];
} 
$field_mapping = DB::connection($db_name)->table($db_name . ".feed_mappings")->insert($data);
} 

现在,我不想删除现有的行,而是想基于id_feed_mappings更新这些行。你能告诉我该怎么做吗?

检查这是否有效,要根据id_feed_mappings值进行更新,可以在->update($data)之前使用->where('id_feed_mappings', '=' ,'a value or variable')

if( $request->feed_type !== 'scrape' ) { 
// try using update instead of insert

$field_mapping = true;
if( $request->feed_type !== 'scrape' ) { 
if( count($projectFieldOptions) ) {
foreach ($projectFieldOptions as $mapping) {
$data[] = [
'id_feed'       => $id_feed,
'id_project'    => $token,
'import_field_slug' => $mapping['value'],
'internal_field_slug' => $mapping['custom'] ? $mapping['custom_field'] : $mapping['text'],
'custom_field'  => $mapping['custom'],
'updates'   =>  $mapping['updates'],
'removes'   =>  $mapping['removes'],
'import'        => 1,
'date_add'      => now(),
'date_upd'      => now()
];
}
} else {
$data = [];
} 
$field_mapping = DB::connection($db_name)->table($db_name . ".feed_mappings")->update($data);
}

最新更新