からのデータをAPIからデータを受け取りました。これは、APIからの調査の配列によるjsonの応答です。すべての調査では、以下のように形成しています。アプリケーションでマージは、私は私のLaravelアプリケーションのメソッドを持っているデータベース
{
"hash": "8537f99bb4166da9f74f02ebb70907cf",
"sending_date": "2017-08-23T08:32:37+02:00",
"expiration_date": "2018-02-23T08:32:37+01:00",
"created_at": "2017-08-23T08:32:37+02:00",
"trans_id": "10-550\r\n",
"id": 18,
"status": {
"name": "new",
"id": 1
},
"base_survey": {
"name": "Base Survey Test 1",
"created_at": "2017-07-25T10:08:18+02:00",
"creator_trans_id": "10-615",
"date_start": "2017-07-25T00:00:00+02:00",
"expiration_int": 6,
"expiration_string": "months",
"survey_prefix": "PSI",
"welcome_message": "test1",
"expiration_message": "test2",
"id": 1,
"template": {
"path": "/template_ssi_1/",
"name": "SSI",
"id": 1
}
}
}
を私はオブジェクト調査で例と呼ばれているwchichオブジェクトを接続するリレーショナルテーブルがあります。私は、この表からのエンティティの下に示しています
<?php
namespace App\Http\Entities\Cic;
use Doctrine\ORM\Mapping as ORM;
/**
*
* @ORM\Entity
* @ORM\Table(name="cic_case_survey")
*/
class CicCaseSurvey
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
protected $id;
/**
*
* @ORM\OneToOne(targetEntity="CicCase", cascade={"all"})
* @ORM\JoinColumn(name="case_id", referencedColumnName="id")
*
*/
protected $case;
/**
*
* @ORM\Column(name="survey_id", type = "integer")
*
*/
protected $survey;
/**
* @return mixed
*/
/**
* @ORM\Column(type="datetime")
* @var datetime
*/
protected $created_at;
/**
* @ORM\Column(type="datetime")
* @var datetime
*/
protected $updated_at;
public function getCreatedAt() {
return $this->created_at;
}
public function setCreatedAt() {
$this->created_at = Carbon::now();
}
public function getUpdatedAt() {
return $this->updated_at;
}
public function setUpdatedAt() {
$this->updated_at = Carbon::now();
}
public function getSurvey()
{
return $this->survey;
}
/**
* @param mixed $survey
*/
public function setSurvey($survey)
{
$this->survey = $survey;
}
public function getCase()
{
return $this->case;
}
/**
* @param mixed $case
*/
public function setCase($case)
{
$this->case = $case;
}
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @param mixed $id
*/
public function setId($id)
{
$this->id = $id;
}
}
はAPIからの応答の後、私は調査のobejcts内のデータと事例から、テーブルcic_case_surveyに基づいて
データを接続しようとしています。メソッドからわかるようにmergeSurveysWithCasesサーベイデータを持つすべての接続ケースデータ(ケースIDとfirstContact)に対してfindOneByメソッドを使用するループでマージしました。私の意見では、この解決策は最適ではありません。私はそれが非常に多くのデータのために悪いと思う。誰もがおそらくこのオブジェクトをマージするよりよい解決法を知っていますか?私は助けに非常に感謝するでしょう ;)