我有一个名为“答案”的表,该表将存储有关问卷的客户答案。桌子看起来像这样
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 ++行,那将是一个大问题。
执行此操作的最佳方法是什么? 也许我可以使用任何第三方库基于外键检查批量插入/更新多行吗?
答案 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)