Php 在PrestashopWebService的RESTAPI中添加新表

Php 在PrestashopWebService的RESTAPI中添加新表,php,web-services,rest,prestashop,Php,Web Services,Rest,Prestashop,我已经成功地通过webservice的RESTAPI在prestashop产品表中创建了一个额外的表,但是api链接wb3d是我在webservice中创建的新表。其中包含指向web上某个位置的图像目录的路径。打开此链接时,将显示保存在数据库中的数据,如下图所示 model是web上的目录名,因此当我打开此链接时,此api(wb3d)已与web服务中的产品表关联。显示关联条目,但不显示数据**请参阅下图** 突出显示的区域显示通过webservice的RESTAPI与产品表关联的wb3d表。

我已经成功地通过webservice的RESTAPI在prestashop产品表中创建了一个额外的表,但是api链接wb3d是我在webservice中创建的新表。其中包含指向web上某个位置的图像目录的路径。打开此链接时,将显示保存在数据库中的数据,如下图所示

model是web上的目录名,因此当我打开此链接时,此api(wb3d)已与web服务中的产品表关联。显示关联条目,但不显示数据**请参阅下图**

突出显示的区域显示通过webservice的RESTAPI与产品表关联的wb3d表。我无法将wb3d故事数据与产品表数据关联。所以我可以通过webservice在其他设备上使用它

这就是我迄今为止所尝试的

    <?php
class ProductMergeCore extends ObjectModel

{  
    public $product_id;
    public $id_wb3d;
    public $directory_name;
    public static $definition = array(
    'table' => 'wb3d',
    'primary' => 'id_wb3d',
    'fields' => array(
    'id_wb3d' => array('type' => self::TYPE_INT,  'required' => true),
    'product_id' => array('type' => self::TYPE_INT, 'required' => true),
    'directory_name' => array('type' => self::TYPE_STRING,  'required' =>false, 'size' => 64),
     ),
     );
    protected $webserviceParameters = array();
    }
    ?>

productmerge.php负责在产品表中创建关联表条目

 <?php 

  Class Product extends ProductCore

  {

   public $extrafield;



public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)

 {


    $this->webserviceParameters['associations']['wb3d'] = array('resource'    => 'wb3d','fields' => array('directory_name' => array('required' => true)));

    parent::__construct($id_product, $full, $id_lang, $id_shop, $context);

 }

}
?>

在这个product.php中用于覆盖产品类,通过webserviceparameters()传递额外参数,然后调用产品类的父构造函数

    <?php
    class WebserviceRequest extends WebserviceRequestCore
    {
    public static function getResources()
    {
    $resources=parent::getResources();
    $resources['wb3d'] = array('description' => 'images path', 'class' =>   'ProductMerge');
    ksort($resources);
    return $resources;
    }
    }
    ?>

WebserviceRequest.php类是WebserviceRequest类的重写类,它显示了webservice中表项的描述


这些是完成工作所需的文件我试图实现的是,产品表中的关联表(wb3d)数据应该通过webservice rest api调用可用

如果您想添加其他webservice表作为产品的关联,可以查看位于prestashop/classes中的category.php中的关联是如何完成的

如您所见,有一个名为getter的参数,它从 getChildrenWs是category.php中的一个方法,用于从数据库中获取数据

所以在您的例子中:在Product.php中

$this->webserviceParameters['associations']['wb3d'] = array('resource' => 'wb3d',
                                                            'getter' => 'yourMethodName',
                                                            'fields' => array('directory_name' => array('required' => true));
并在Product.php中创建一个名为“yourMethodName”的方法

public function yourMethodName()
{
  //copy the getChildrenWs method which is in Category.php  and alter it to ur needs
}

为什么要将其添加到product类中,如果要获取产品目录信息,请尝试请求wb3d webservice,您应该添加它的类wb3d是一个在web上保存图像的目录,因此我将在wb3d表的directory_name字段中存储路径。我需要实现的是产品目录也应该包括这个目录,所以我不必从任何其他设备进行多个api调用,这些图像属于产品,所以。。我需要这个与产品表关联的wb3d表我在wb3d中看到一个产品id,该怎么办?如果你看到一个产品的库存量,它存储在一个独特的Web服务中(stock_available),即使它包含在产品关联Web服务中,我的建议是使用一个自定义Web服务。是的,你在这里看到了我的案例,wb3d是一个自定义Web服务,但我需要将它关联到产品Web服务中。。但是你可以看到我文章的第二张图片,目录名字段是空的。但是,如果我直接打电话到wb3d网络服务,数据是可见的。我无法将此wb3d关联到产品网络服务。与你所说的库存相同。我想这就是我要寻找的。我会尝试一下,并在这里告诉你,谢谢你的时间。这帮助我解决了问题,我也理解了预启动模块的工作流程很好,我会在这里发布代码,实现我自己的问题。谢谢你的时间@kiran
public function yourMethodName()
{
  //copy the getChildrenWs method which is in Category.php  and alter it to ur needs
}