簡體   English   中英

多對多關系Json

[英]Many to Many relationship Json

我正在使用Doctrine作為ORM。 我對此很陌生。 因此,我想發送有關實體的Json響應。 實體如下:

  • 醫學
  • 泛型
  • 內容

醫學和仿制葯具有多對多的關系,仿制葯和內容也具有多對多的關系。 我需要顯示葯物的詳細信息以及葯物的仿制葯和仿制葯的含量。

這是我的代碼

public function jsonSerialize()
{
    $newArray= array();
    $generics=$this->getGenerics();
    foreach ($generics as $generic){
        $array = json_decode(json_encode($generic), true);
        var_dump($array);
        array_push($newArray, $array);
    }
    var_dump($newArray);
    $xyz=array();
    $xyz1=array();
    $arratJosn = array(
            'medicineId' => $this->id,
            'medicineName' => $this->medicineName,
            'medicineQuantity' => $this->medicineQuantity,
            'medicinePrice' =>$this->medicinePrice,
            'manufactureId' =>$this->manufactureId->getmanufatureName(),
            'medicineApproved' => $this->medicineApproved,
            'medicineVersion' =>$this->medicineVersion,
            'genericDetails'=> array('genericName'=>$xyz,
                                     'genericQuantity' => $xyz1,),

    );

    foreach ($generics as $generic){
        $genericName=$generic->getGenericName();
        array_push($arratJosn['genericDetails']['genericName'], $genericName);
        $contents=$generic->getContent();
        foreach ($contents as $content){
            $genericQuantity=$content->getGenericQuantity();
            array_push($arratJosn['genericDetails']['genericQuantity'], $genericQuantity);
            $genericPrice=$content->getGenericUnit();
        }
    }

    return $this;

}

在實體上使用jsonEncode,我可以檢索json數據,如下所示:

{"medicineId":27,
"medicineName":"MedTest11",
"medicineQuantity":20
"medicinePrice":70,
"manufactureId":"Company2",
"medicineApproved":1,
"medicineVersion":1,
"genericDetails":{"genericName":["paracetamol","newgeneric"],
                  "genericQuantity":["30","40"]}
}

雖然我希望結果顯示為

{"medicineId":27,
"medicineName":"MedTest11",
"medicineQuantity":20, 
"medicinePrice":70,
"manufactureId":"Company2", 
"medicineApproved":1, 
"medicineVersion":1,
"genericDetails":[{"genericName":"paracetamol", "genericQuantity":"30"},{"genericName":"newgeneric", "genericQuantity":"40"}] 
}

我怎樣才能做到這一點?

為此,您需要像這樣將數組推入genericDetails

$arratJosn = array(
        'medicineId' => $this->id,
        'medicineName' => $this->medicineName,
        'medicineQuantity' => $this->medicineQuantity,
        'medicinePrice' =>$this->medicinePrice,
        'manufactureId' =>$this->manufactureId->getmanufatureName(),
        'medicineApproved' => $this->medicineApproved,
        'medicineVersion' =>$this->medicineVersion,
        'genericDetails'=> array()            
);

foreach ($generics as $generic){
    $genericName=$generic->getGenericName();
    $contents=$generic->getContent();
    foreach ($contents as $content){
        $genericQuantity=$content->getGenericQuantity();
        $genericPrice=$content->getGenericUnit();
        $genericArray = array (
            'genericName' => $genericName,
            'genericQuantity' => $genericQuantity
        );            
        array_push($arratJosn['genericDetails'],$genericArray);                
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM