2016-04-25 5 views
0

parse.com php sdkを使用しています。PHP Parse.comは、別のテーブルへのポインタを持つカラムからデータを取得します。

複数の列を持つProductというテーブルの列にあるポインタからデータを取得する際に問題が発生しています。 (都市、ラベル、国、ブランド....)

'ブランド'は、 'ブランド'テーブルのデータへのポインタを保持する列です。

私のPHPコードでは、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を拡張します。

次に、すべての製品を取得しているユーザーを指定する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

私は私の問題に対する答えを見つけることができました。 ParseObject.phpがあった場所私のPHPプロジェクトで

は、私は、フォルダに行って、私はforeachのの初めにこのコードを追加機能

mergeFromServer($data, $completeData = true) 

更新:

  // 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(); 
関連する問題