我有一个名为“答案”,这将顾客的答案存储有关问卷调查表。该表看起来像这样
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 } }
我想要做到的,是由一个做上洋洋洒洒一个查询或单个动作来代替的foreach答案之一检查question_id和CUSTOMER_ID已经存在,它会更新否则会插入答案表“答案”。
这样做的foreach /每回答一个数据一个循环,它不应该是一个困难的问题。但是,如果我已经在“答案”表有3000个++行那么这将是一个很大的问题。
什么是做到这一点的最好办法?也许是有什么我可以使用基于外键检查,做好群众插入/更新多行第三方库?
您可以通过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)