2016-04-25 59 views
0

正在使用parse.com php sdk。PHP Parse.com使用指向其他表的列檢索數據

上傳的數據來自表中名爲Product的表中有多列的列中的指針。 (城市,標籤,國家,品牌....)

'品牌'是一個列'品牌'表中持有指向數據的指針。

在我的PHP代碼中,我設置了一個名爲'Brand'的類來擴展ParseObject。

class Brand extends ParseObject { 

public static $parseClassName = 'Brands'; 

function __construct(){ 
    parent::__construct($parseClassName); 
} 
public function getIdBrand(){ 
    return $this->getObjectId(); 
} 

public function getName(){ 
    return $this->get('name'); 
} 

public function setName($name){ 
    return $this->set('name',$name); 
} 

public function getDescription(){ 
    return $this->get('description'); 
} 

public function setDescription($description){ 
    return $this->set('description',$description); 
} 

public function save(){ 
    if(!getName() && !getDescription()){ 
     echo 'Brand can\'t be saved'; 
    }else{ 
     parent::save(); 
    } 
} 

function showBrand() { 
    echo 'Brand[' . getIdBrand() . ', ' . getName() . ', ' . getDescription() . ']'; 
} 

}

我類產品擴展的parseObject。

class Product extends ParseObject { 

public static $parseClassName = 'Product'; 

function __construct() { 
    parent::__construct ($parseClassName); 
} 
public function getIdProduct() { 
    return $this->getObjectId(); 
} 

// -------------- 
// other getter & setters 
// -------------- 


/** 
* 
* @return Brand 
*/ 
public function getBrand() { 
    return $this->get('brand'); 
} 

public function setBrand($brand) { 
    return $this->set ('brand', $brand); 
} 


// -------------- 
// other getter & setters 
// -------------- 

然後我有一個PHP文件,在該文件中,我獲取所有產品,同時指定他們所屬的用戶。

$currentUser = ParseUser::getCurrentUser(); 
$query = new ParseQuery(Product::$parseClassName); 
$query->equalTo("user", $currentUser); 
$results = $query->find(); 

然後我繼續獲取每個產品的數據。

for ($i = 0; $i < count($results); $i++) { 
$product = $results[$i]; 
$brand = $results[$i]->get('brand'); 
echo 'brand name = '.$brand->getName().','; 
.........} 

我的問題是,我無法獲得品牌名稱。 它只給我一個空值。

做當==>var_dump($results[$i]->get('brand')); 我得到下面的結果

object(Brand)#6 (9) { ["serverData":protected]=> array(0) { } 
["operationSet":protected]=> array(0) { } 
["estimatedData":"Parse\ParseObject":private]=> array(0) { } 
["dataAvailability":"Parse\ParseObject":private]=> array(0) { } 
["className":"Parse\ParseObject":private]=> string(6) "Brands" 
["objectId":"Parse\ParseObject":private]=> NULL 
["createdAt":"Parse\ParseObject":private]=> NULL 
["updatedAt":"Parse\ParseObject":private]=> NULL 
["hasBeenFetched":"Parse\ParseObject":private]=> bool(true) } 

你能告訴我如何在對象(品牌)檢索數據。

回答

0

我設法找到了我的問題的答案。

在我的PHP項目,我去所在的文件夾ParseObject.php是和我更新了功能

mergeFromServer($data, $completeData = true) 

我在的foreach開始時加入以下代碼:

  // If we have a column in our table that has a pointer to data in another table 
      // The data in our column will be considered as an array. 
      // In that array there is the objectId, 
      // We then transform that array to a string containing the objectId 
      // We will later on do a query to get the data associated to our column 
      if(is_array($value)){ 
       if(!is_null($value['objectId'])){ 
        $value = $value['objectId']; 
       } 
      } 
0

經過幾個小時的研究後,我發現有一個更簡單的方法來獲取指針列中的數據。我不得不在我的查詢中添加'includeKey'。

$currentUser = ParseUser::getCurrentUser(); 
$query = new ParseQuery(Product::$parseClassName); 
$query->includeKey("brand"); 
$query->equalTo("user", $currentUser); 
$results = $query->find(); 
相關問題