2017-05-05 69 views
1

我想以多种形式记录设备,但始终会出现错误。 未定义指数:命名在Laravel中将数组数据发布到数据库中

public function EquipCheck(Request $request) { 
    $user = User::where('username', $request -> username) -> firstOrFail(); 
    if ($request -> token == $user -> token) { 
     $item_detail_id = CheckLog::where('user_id', $user -> id) -> orderBy('id', 'desc') -> first() -> item_detail_id; 
     $new_form = new Form; 
     $new_form -> item_detail_id = $item_detail_id; 
     $new_form -> user_id = User::where('username', $request -> username) -> firstOrFail() -> id; 
     $new_form -> created_time = Carbon::now() -> format('Y-m-d H:i:s'); 
     $new_form -> save(); 
     $form = Form::with('eqpt') -> where('item_detail_id', $item_detail_id) -> orderBy('created_time', 'desc') -> first(); 

     $data = $request -> eqpt; 
     $i = 0; 
     $sql = array(); 

     while($i < count($cyldata['serie'])){ 
      $sql[] = array(
       'form_id' => $form -> id, 
       'name' => $data['name'][$i], 
       'unit' => $data['unit'][$i], 
       'quantity' => $data['quantity'][$i], 
       'check_quantity' => $data['check_quantity'][$i], 
      ); 
      $i++; 
     } 

     DB::table('eqpt') -> insert($sql); 

     return "Success"; 
    } 
} 

当我使用下面的代码,数据库可被插入该阵列。

$dataSet[] = [ 
      'form_id' => $form -> id, 
      'name' => 'test', 
      'unit' => 'box', 
      'quantity' => 20, 
      'check_quantity' => 20, 
     ]; 

     DB::table('eqpt') -> insert($dataSet); 

This is post data.

+0

您是否尝试过你设置后,检查'$ data'变量?另外,$ cyldata ['serie']'被设置在哪里? – jackel414

+0

如何从帖子数据重新创建数组? –

+0

你是否创建了dd($ data)?你能让我们知道结果吗? –

回答

2

$数据包含对象的阵列。 $ data ['name']引用该数组的属性,而您应该访问该数组中的对象的属性。

更换

$sql[] = array(
    'form_id' => $form -> id, 
    'name' => $data['name'][$i], 
    'unit' => $data['unit'][$i], 
    'quantity' => $data['quantity'][$i], 
    'check_quantity' => $data['check_quantity'][$i], 
); 

$sql[] = array(
    'form_id' => $form -> id, 
    'name' => $data[$i]['name'], 
    'unit' => $data[$i]['unit'], 
    'quantity' => $data[$i]['quantity'], 
    'check_quantity' => $data[$i]['check_quantity'], 
); 
+0

良好的捕获 - 我没有看到,OP已转置的关键。 – jackel414