【问题标题】:PHP Parse.com retrieving data from a column with a pointer to another tablePHP Parse.com 从带有指向另一个表的指针的列中检索数据
【发布时间】:2016-04-25 21:07:45
【问题描述】:

我正在使用 parse.com php sdk。

在从名为 Product 的表中的列中的指针检索数据时遇到问题,该表具有多个列。 (城市、标签、国家、品牌....)

'brand' 是一个包含指向表 'Brands' 中数据的指针的列。

在我的 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()  . ']';
}

}

我的类 Product 扩展了 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]-&gt;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) }

你能告诉我如何检索对象(品牌)中的数据吗?

【问题讨论】:

    标签: php parse-platform


    【解决方案1】:

    我设法找到了问题的答案。

    在我的 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'];
                    }
                }
    

    【讨论】:

      【解决方案2】:

      经过数小时的再次研究,我发现有一种更简单的方法可以获取作为指针的列中的数据。

      我必须在查询中添加“includeKey”。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-15
        • 2021-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多