【发布时间】:2021-11-12 14:26:02
【问题描述】:
我有两张桌子,operations 和 upload_operations。每天我都会截断一组新数据并将其导入upload_operations,然后在 Nova 中运行一些操作来比较、更新来自upload_operations 的新数据并将其添加到operations。我的一项操作没有按预期工作:
public function handle()
{
$new_uploads = DB::select('
SELECT
*
FROM
upload_operations u
LEFT JOIN operations o USING (operation_id)
WHERE
o.operation_id IS NULL');
$new_operations = UploadOperation::hydrate($new_uploads);
Log::info('New operations count: ' . $new_operations->count());
foreach ($new_operations->chunk(25) as $chunk) {
foreach($chunk as $no) {
Operation::create([
'certifier_name' => $no->certifier_name,
'certifier_website' => $no->certifier_website,
'certifier_email_address' => $no->certifier_email_address,
'operation_id' => $no->operation_id,
'operation_name' => $no->operation_name,
...
// rest of rows
...
]);
}
}
return Action::message('New uploads added!');
}
SQL 语句有效。使用我当前的数据,它返回 63 行,每列都填充了数据。但是,当我运行该操作时,我的数据库有 63 条记录,其中除了 operation_id(主键)之外的所有列都是空白的。
我在滥用 hydrate() 吗?有没有更好的方法可以将这些记录插入到operations 表中?
【问题讨论】:
-
那些字段
certifier_name等没有错字,并且在模型的可填充数组中吗? -
@SamuelAialaFerreira 是的。
标签: mysql laravel eloquent laravel-nova