【问题标题】:Laravel JSON arrays Where FunctionLaravel JSON 数组 Where 函数
【发布时间】: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_iddate 不存在,我必须创建新数据。

我的问题:是否有任何函数或助手可以将每个数组与出勤列进行比较?

【问题讨论】:

    标签: php arrays json laravel


    【解决方案1】:

    在 cmets 中,您说过要比较 student_iddate 并更新现有记录。使用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 这是可能的。我已经更新了答案。
    猜你喜欢
    • 2018-06-28
    • 1970-01-01
    • 2022-01-05
    • 2021-12-04
    • 2017-04-10
    • 2021-04-12
    • 2016-11-20
    • 2019-10-15
    • 2016-11-23
    相关资源
    最近更新 更多