Laravel 雄辩和简单的数据库查询

问题描述 投票:0回答:1

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();
}

感谢您的任何想法和想法。

php laravel eloquent mysqli
1个回答
1
投票

您正在进行数组到字符串的转换,因此您需要对所有 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();
  // }
© www.soinside.com 2019 - 2024. All rights reserved.