在laravel中将多个数据插入数据库
Posted
技术标签:
【中文标题】在laravel中将多个数据插入数据库【英文标题】:multiple data insert into database in laravel 【发布时间】:2020-08-26 19:29:15 【问题描述】:嗨,我是 laravel 的新手,我在将数据插入数据库并抛出错误时遇到了麻烦
"count(): 参数必须是 实现 Countable 的数组或对象”
我想在数据库中添加所有注册员工的出勤详细信息
控制器
public function Attendence()
$data=employee_data::all();
return view('attendence',compact('data'));
public function mark_attendence(Request $request)
$request->validate([
'date' => 'required',
'is_present' => 'required'
]);
$data=$request->all();
$last_id=employee_data::create($data)->id;
if (count($request->is_present) >0 )
# code...
foreach ($return->is_present as $item => $v)
$data2=array(
'is_present' =>$request->is_present[$item],
'date'=> $request->date[$item],
'user_id'=>$last_id
);
//$data2->save();
//$employee->save();
//$employee->employee_data()->create([]);
return redirect('/index')->with('succ','Attendence Added Successfully');
刀片输出:
提交 ID 名 姓 入职日期 邮政 评论 @foreach( $data 作为 $row ) $row->id $row->first_name $row->last_name $row->date_joining $row->post     礼物     缺席 @endforeach ID 名 姓 入职日期 邮政 评论型号 类employee_attendence 扩展模型 //
protected $fillable = array('is_present' ,'date', 'user_id' );
//protected $fillable=[];
public $timemstamps= false ;
public function employee_data()
//return $this->hasOne(employee_data::class,'App/employee_data');
return $this->hasOne('App\employee_data');
模型2
命名空间应用程序;
使用 Illuminate\Database\Eloquent\Model;
classemployee_data 扩展模型 //保护 $fillabel=['first_name','last_name','contact_no','date_joining','post'];
protected $fillable = array('first_name', 'last_name', 'contact_no' ,'date_joining','post' );
//protected $fillable=[];
public $timemstamps= false ;
public function employee_attendence()
//return $this->hasOne( employee_attendence::class, 'App/employee_attendence');
return $this->belongsTo('App\employee_attendence');
【问题讨论】:
你的is_present
是视图侧的数组吗?
没有 Absent
和 Present
这样的值,因此请相应地检查条件。
它抛出一个错误:未定义的错误:返回
您是一次标记缺席或出席,还是先选中或取消选中然后立即提交?
【参考方案1】:
据我所知。您可能有
is_present
将是一个数组格式,从视图来看,如name="is_present[]"
。如果这是您的情况,那么下面的代码将正常工作。如果不是,那么如果输入不是对象或数组,则不能使用count()
public function mark_attendence(Request $request)
for($i = 0; $i < sizeof($request->is_present); $i++)
$emp = new employee_attendence();
if($request->is_present[$i] == "Present")
$emp->is_present = "Present";
if($request->is_present[$i] == "Absent")
$emp->is_present = "Absent";
$emp->date = now();
$emp->user_id = $request->user_id[$i];
$emp->save();
return redirect('/index')->with('succ','Attendence Added Successfully');
【讨论】:
ErrorException 未定义变量:返回 我刚刚展示了循环的简单逻辑。您必须将$data2
插入下表中。
$data2 ?进入表格【参考方案2】:
在您的添加出勤方法中试试这个 这对我有用
for($i = 0; $i < sizeof($request->is_present); $i++)
$emp = new employee_attendence();
if($request->is_present[$i] == "Present")
$emp->is_present = "Present";
if($request->is_present[$i] == "Absent")
$emp->is_present = "Absent";
$emp->date = $request->date;
$emp->user_id = $request->user_id[$i];
$emp->save();
【讨论】:
如果你还记得我也给过你这个答案。以上是关于在laravel中将多个数据插入数据库的主要内容,如果未能解决你的问题,请参考以下文章