使用Eloquent插入和更新基于多行的外键的最佳方法是什么?

时间:2019-02-09 12:17:36

标签: php mysql laravel eloquent slim

我有一个名为“答案”的表,该表将存储有关问卷的客户答案。桌子看起来像这样

answers
+-----------------+
|id (PK)          |
|customer_id (FK) |
|question_id (FK) |
|value            |
|_________________|

我的请求将是这样

{
    "customer_id":1,
    "answer": {
        "1":"My Name", //"1" is question_id , "My Name" is value
        "2":"My Phone Number" //"2" is question_id, "My Phone Number" is value
    }
}

我要实现的目标是对Eloquent进行单个查询或单个操作,而不是逐一地给出答案以检查 question_id customer_id 存在,它将更新,否则将在表“答案”中插入答案。

通过对每个答案数据进行一次foreach /循环,这不是一个难题。但是,如果我在“答案”表中已经有3000 ++行,那将是一个大问题。

执行此操作的最佳方法是什么? 也许我可以使用任何第三方库基于外键检查批量插入/更新多行吗?

1 个答案:

答案 0 :(得分:0)

您可以通过laravel的UpdateORCreate方法执行此操作,该方法可以执行所需的确切操作。

一般来说,声明如下:

$model=Model::UpdateOrCreate(["condtion1"=>"value1",...],["field1"=>"value1",...]);

在您的情况下,如下所示:

$answer=Answer::UpdateOrCreate(["customer_id"=>$customer_id,"question_id"=>$question_id],["value"=>$value]);

有关更多信息,请选中 Laravel Eloquent Documentation (Other Creation Methods)