У меня есть небольшое сомнение относительно цикла, который я выполняю, потому что он возвращает пустые значения.
Во-первых, я получаю свои элементы следующим образом:
$items = Session::get('items');
$deco = json_decode($items, true);
Если яreturn $deco
Я получаю это:
{
"items":[
{
"id":1,
"inventoryID":1,
"title":"Product 1",
"quantity":1,
"unit_price":20,
"image":"img.png"
},
{
"id":2,
"inventoryID":1,
"title":"Product2",
"quantity":1,
"unit_price":25,
"image":"img.png"
}
]
}
Теперь в цикле (который я использую для изменения значений некоторых ключей для интеграции PayPal) у меня есть это:
$results = [];
foreach($deco['items'] as $element) {
$name=$element['title'];
$quantity=$element['quantity'];
$sku= $element['id'];
$price=$element['unit_price'];
$item = new Item();
$item -> setName($name)
->setCurrency('USD')
->setQuantity($quantity)
->setSku($sku)
->setPrice($price);
$results[]=$item;
}
Если я возвращаю return $item
(вне цикла), я получаю (как и ожидалось) только одно значение, а не всю коллекцию:
{
"name": "Product2",
"currency": "USD",
"quantity": 1,
"sku": 2,
"price": "25"
}
Но если я возвращаю return $results
переменную, которую янужно, это дает мне это (он делает {} пунктов, как мне нужно, но возвращает пустое):
[
{},
{}
]
Thw весь код выглядит так:
public function test(){
$items = Session::get('items');
$deco = json_decode($items, true);
$results = [];
foreach($deco['items'] as $element) {
$name=$element['title'];
$quantity=$element['quantity'];
$sku= $element['id'];
$price=$element['unit_price'];
$item = new Item();
$item -> setName($name)
->setCurrency('USD')
->setQuantity($quantity)
->setSku($sku)
->setPrice($price);
$results[]=$item;
}
return $results;
}
РЕДАКТИРОВАТЬ: Item.php
модель на \vendor\paypal\rest-api-sdk-php\lib\PayPal\Api
является PayPal по умолчанию:
class Item extends PayPalModel
{
/**
* Stock keeping unit corresponding (SKU) to item.
*
* @param string $sku
*
* @return $this
*/
public function setSku($sku)
{
$this->sku = $sku;
return $this;
}
/**
* Stock keeping unit corresponding (SKU) to item.
*
* @return string
*/
public function getSku()
{
return $this->sku;
}
/**
* Item name. 127 characters max.
*
* @param string $name
*
* @return $this
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Item name. 127 characters max.
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Description of the item. Only supported when the `payment_method` is set to `paypal`.
*
* @param string $description
*
* @return $this
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* Description of the item. Only supported when the `payment_method` is set to `paypal`.
*
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* Number of a particular item. 10 characters max.
*
* @param string $quantity
*
* @return $this
*/
public function setQuantity($quantity)
{
$this->quantity = $quantity;
return $this;
}
/**
* Number of a particular item. 10 characters max.
*
* @return string
*/
public function getQuantity()
{
return $this->quantity;
}
/**
* Item cost. 10 characters max.
*
* @param string|double $price
*
* @return $this
*/
public function setPrice($price)
{
NumericValidator::validate($price, "Price");
$price = FormatConverter::formatToPrice($price, $this->getCurrency());
$this->price = $price;
return $this;
}
/**
* Item cost. 10 characters max.
*
* @return string
*/
public function getPrice()
{
return $this->price;
}
/**
* 3-letter [currency code](https://developer.paypal.com/docs/integration/direct/rest_api_payment_country_currency_support/).
*
* @param string $currency
*
* @return $this
*/
public function setCurrency($currency)
{
$this->currency = $currency;
return $this;
}
/**
* 3-letter [currency code](https://developer.paypal.com/docs/integration/direct/rest_api_payment_country_currency_support/).
*
* @return string
*/
public function getCurrency()
{
return $this->currency;
}
//More similar stuff
Заранее спасибо