Laravel 9.pнp 8.0。
任务是逐行写入一个数组。你能告诉我为什么用这种形式的 eloquent 写法不起作用,而用 DB select 写法却可以正常工作。我的问题是什么?我希望看到代码更短更清晰)。当尝试用 eloquent 记录错误数组到字符串转换时。
数据库
$task = $request['task'];
$datetask = $request['datetask'];
$timetask = $request['timetask'];
for ($i = 0; $i < count($task ); $i++) {
DB::insert('insert into tasks (task,datetask,timetask,)values(?,?,?)',
[$task[$i],$datetask[$i],$timetask[$i]]);
};
而且雄辩。数组到字符串转换时出错。行
$task->save();
–
for ($i = 0; $i < count($task); $i++) {
$task= new Task;
$task->task = $request['task'];
$task->datetask = $request['datetask'];
$task->timetask = $request['timetask'];
$task->save();
}
感谢您的任何想法和想法。
您正在进行数组到字符串的转换,因此您需要对所有 3 个参数值使用带有
[i]
的循环
for ($i = 0; $i < count($task); $i++) {
$task= new Task;
$task->task = $request['task'][$i]; // missing [$i] here
$task->datetask = $request['datetask'][$i];
$task->timetask = $request['timetask'][$i];
$task->save();
}
或者如果您直接传递数组值,则不要使用循环
// for ($i = 0; $i < count($task); $i++) {
$task= new Task;
$task->task = $request['task']; // passing request param directly
$task->datetask = $request['datetask'];
$task->timetask = $request['timetask'];
$task->save();
// }