我正在构建一个Laravel 5应用程序,我正在使用jQuery DataTables插件。在数据表中,每行有3个输入字段。我想要做的是插入所有填充的行输入。在每一行中,您必须填写所有3个输入,以便将数据发布到数据库中。 (数据库是sql server。)我尝试了一些东西,但它没有用。这是我在控制器存储方法中尝试过的方法:
$dates = $request->get('month');
$values = $request->get('value');
$comments = $request->get('comment');
$reports = []; // this will keep what we input in our DB
/*if(!empty($row['month']) && !empty($row['value']) && !empty($row['comment'])){
foreach($row as $rows){
$index = +1;
}
}*/
if(!empty($dates) && !empty($values)){
for($i = 0; $i < count($dates); $i++)
{
//here i am dividing month and year
$date = explode('-', $dates[$i]);
$year = $date[0];
$month = $date[1]; // <-- line 75
$reports[] = Reports::create([
'month' => $month,
'year' => $year,
'value' => $values[$i],
'comment' => $comments[$i]
]);
}
}
return $reports;
但这会引发一个错误:
ErrorException in ReportController.php line 75:
Undefined offset: 1
我搜索了它,它说我传递的是数组而不是字符串。
这是stacktrace(它的一部分):
at HandleExceptions->handleError('8', 'Undefined offset: 1', 'E:\socgen\soc-gen\app\Http\Controllers\ReportController.php', '75', array('request' => object(Request), 'dates' => array('2015-06', '2015-02', ''), 'values' => array('369', '22223', ''), 'comments' => array('878', '5466', ''), 'reports' => array(object(Reports)), 'i' => '1', 'date' => array(''), 'year' => '', 'month' => '06')) in ReportController.php line 75
感谢任何帮助或提示
答案 0 :(得分:0)
php.net上的官方文档阅读以下有关爆炸功能的内容。
返回一个字符串数组,每个字符串都是 string 的子字符串,通过在字符串分隔符形成的边界上将其拆分而形成。
得出结论,php的explode函数只接受字符串作为参数,在你的情况下你传递一个数组。我建议你先将数组中的数据放入一个字符串中,然后将其传递给explode。 e.g
for($i = 0; $i < count($dates); $i++)
{
//remove empty indexes from your array
array_diff( $dates[$i], array( '' ) );
//create a new string and put your date into it.
$dateString = $dates[$i];
$date = explode('-', $dateString);
$year = $date[0];
$month = $date[1]; // <-- line 75
//rest of your code goes here
}
}