-3

データベースから多次元配列を持つ配列を作成したいと考えています。データベースには、車両用、損傷用、損傷写真用の 3 つのテーブルがあります。

テーブル vehicleにはidnameの 2 つの列があります

テーブルDamagesには、 damagesID 、vehicleIDdamagesType 、およびdamagesDescriptionの4 つの列があります。

テーブル damagesPhotosには、damagesPhotoID 、damagesID 、およびdamagesPhotoUrlの 3 つの列があります

これらの 3 つの列を次のような配列に結合する必要があります。

$vehicle = array( 
   "id" => "somestring", 
   "name" => "somestring", 
   "damages" => array( 
       "damagesType" => "somestring", 
       "damagesDescription" => "somestring", 
          "photoOfDamages" => array( 
            "damagesPhotoUrl" => "somestring" 
          ) 
  ) 
); 

私のコードは次のようになりますが、正しく動作していません。

$result = mysql_query( "SELECT * from vehicle v LEFT JOIN damages d ON v.id = d.vehicleID LEFT JOIN damagesPhotos p ON d.damagesID = p.damagesID WHERE d.damagesID = p.damagesID AND v.id = 1") or die(mysql_error());  

$rowsResult  = array();

while ($r = mysql_fetch_assoc($result))
    {
        $rowsResult  [] = $r;       
    }

mysql_free_result($result);

echo json_encode($rowsResult);
...
4

2 に答える 2

3

配列を使用してこれを行うこともできますが、ドメイン オブジェクトとデータ マッパーを使用してデータを入力すると、はるかに優れた構造が得られます。

class Vehicle
{
   private $id;
   private $name;
   private $damages; // collection of Damage objects
}

class Damage
{
  private $id;
  private $type;
  private $photos; // collection of photo objects
}

class Photo
{
  private $id;
  private $imageurl;
} 

データ マッパーは、オブジェクトに対してセッター関数を使用して、要求されたときにデータを入力します。

于 2012-08-30T16:47:58.543 に答える
1
$vehicle = array(
    "id" => "somestring",
    "name" => "somestring",
    "damages" => array(
        "type" => "somestring",
        "location" => "somestring",
        "photo" => array(
            "imageurl" => "somestring"
        )
    )
);

複数の車両の場合、次のようになります。

$vehicles = array(
    0 => array(  // you can omit the numeric index, I'm just using it for clarity
        "id" => "somestring",
        "name" => "somestring",
        "damages" => array(
            "type" => "somestring",
            "location" => "somestring",
            "photo" => array(
                "imageurl" => "somestring"
            )
        )
    ),
    1 => array(
        "id" => "somestring",
        "name" => "somestring",
        "damages" => array(
            "type" => "somestring",
            "location" => "somestring",
            "photo" => array(
                "imageurl" => "somestring"
            )
        )
    )
);
于 2012-08-30T16:47:10.477 に答える