Laravel JSON 数组 Where 函数
Posted
技术标签:
【中文标题】Laravel JSON 数组 Where 函数【英文标题】:Laravel JSON arrays Where Function 【发布时间】:2018-08-05 02:49:52 【问题描述】:假设我有一个带有列的表出勤:
id, student_id, attendance, date
我收到这样的 JSON 格式的发布请求...
[
"student_id": 5,
"date": "2018-01-03",
"attendance": 0
,
"student_id": 2,
"date": "2018-01-03",
"attendance": 0
,
"student_id": 2,
"date": "2018-01-03",
"attendance": 0
]
然后丢掉我们得到的请求->all()...
array:3 [
0 => array:3 [
"student_id" => 5
"date" => "2018-01-03"
"attendance" => 0
]
1 => array:3 [
"student_id" => 2
"date" => "2018-01-03"
"attendance" => 0
]
2 => array:3 [
"student_id" => 2
"date" => "2018-01-03"
"attendance" => 0
]
]
问题是如何在出勤表中保存或更新此请求?
我要比较考勤表中的数据。如果一行包含 student_id 和日期,我必须更新出勤率。如果student_id
和date
不存在,我必须创建新数据。
我的问题:是否有任何函数或助手可以将每个数组与出勤列进行比较?
【问题讨论】:
【参考方案1】:在 cmets 中,您说过要比较 student_id
和 date
并更新现有记录。使用updateOrCreate()
方法:
foreach ($request->all() as $attendance)
Attendance::updateOrCreate($request->only('date', 'student_id'), $request->only('attendance'));
对于这个方法,确保模型有$fillable
数组:
protected $fillable = ['student_id', 'attendance', 'date'];
【讨论】:
但是我需要将每个数据与考勤表进行比较,因为我不想一次又一次地添加相同的数据。例如,如果请求带有 student_id=1, date="2018-02-03", admission="1" 数据并且我的出勤表已经有该数据,那么出勤表将有两行具有相同数据的行。希望你能理解。 @AnimeshPandey 你打算如何比较它?您的请求中没有 ID。 我有 student_id 和日期。我想把它和服务员桌比较一下。不可以吗? @AnimeshPandey 这是可能的。我已经更新了答案。以上是关于Laravel JSON 数组 Where 函数的主要内容,如果未能解决你的问题,请参考以下文章
在 where 子句 laravel 中使用 Json 属性
如何在laravel中使用json将json数组打印到jquery表?