Не удается получить данные GraphQL+PhpPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Не удается получить данные GraphQL+Php

Сообщение Anonymous »

Привет!
У меня возникла проблема: я использую GraphQL с PHP{обязательно} для получения некоторых данных о продукте {название, категория, цена, атрибуты и т. д.
сначала это как выглядела моя схема:

Код: Выделить всё

use GraphQL\Type\Definition\Type;
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Schema;
require_once '../Data/DBconnect.php';

// Initialize Database Connection
$dbx = new Database();
$db = $dbx->connect();

/**
* Attribute Type
* Defines the structure for product attributes
*/
$attributeType = new ObjectType([
'name' => 'Attribute',
'fields' => [
'display_value' => Type::string(),
'valuex' => Type::string()
]
]);

/**
* Product Type
* Defines structure for individual products with resolvers for fields that require database queries
*/
$productType = new ObjectType([
'name' => 'Product',
'fields' => [
'id' => Type::string(),
'name' => Type::string(),
'brand' => Type::string(),
'description' => Type::string(),
'inStock' => Type::boolean(),
'category' => [
'type' => Type::string(),
'resolve' => function($root) use($db){
$product_id = $root['id'];
$query = "SELECT c.Cat_name FROM products p
JOIN categories c ON c.id = p.category_id
WHERE p.id = ?";

$stmt = $db->prepare($query);
$stmt->bind_param("s", $product_id);
$stmt->execute();
$result = $stmt->get_result();
$cat = $result->fetch_assoc();
return $cat['Cat_name'];

}
],
'price' => [
'type' => Type::float(),
'resolve' => function($root) use($db) {
$product_id = $root['id'];
$query = 'SELECT amount FROM prices WHERE product_id = ?';
$stmt = $db->prepare($query);
$stmt->bind_param('s', $product_id);
$stmt->execute();
$result = $stmt->get_result();
$price = $result->fetch_assoc();
return $price['amount'];
}
],
'img_url' => [
'type' => Type::listOf(Type::string()), // Adjust the type to listOf strings
'resolve' => function($root) use($db){
$product_id = $root['id'];
$query = 'SELECT img_url FROM product_gallery WHERE product_id = ?';
$stmt = $db->prepare($query);
$stmt->bind_param("s", $product_id);
$stmt->execute();
$result = $stmt->get_result();
$images = $result->fetch_all(MYSQLI_ASSOC);

return array_column($images, 'img_url');
}
],
'attributes' => [
'type' => Type::listOf($attributeType),
'resolve' => function($root) use($db) {
$product_id = $root['id'];
$query = 'SELECT display_value, valuex FROM hotfix WHERE product_id = ?';
$stmt = $db->prepare($query);
$stmt->bind_param("s", $product_id);
$stmt->execute();
$result = $stmt->get_result();
return $result->fetch_all(MYSQLI_ASSOC);
}
]
]
]);
//==============================================================================================
/**
* Query Type
* Defines the root query for fetching multiple products
*/
$QueryType = new ObjectType([
'name' => 'Query',
'fields' => [
'products' => [
'type' => Type::listOf($productType),
'resolve' =>  function() use($db) {
$query = 'SELECT * FROM products';
$result = $db->query($query);
if (!$result) {
echo "Database query failed";
var_dump($db->error);
return null;
}
$products = $result->fetch_all(MYSQLI_ASSOC);

// Map each product's basic fields, letting Product type resolvers handle price, img_url, and attributes
return array_map(function($product) {
return [
'id' => $product['id'],
'name' => $product['name'],
'brand' => $product['brand'],
'description' => $product['Des'],
'inStock' => $product['inStock']
];
}, $products);
}
]
]
]);

// Create Schema
$schema = new Schema([
'query' => $QueryType
]);

?>
все работало нормально... поэтому я решил использовать свой ООП "SKILLZ", но почему-то он больше не работал, поэтому я начал отладку, чтобы проверить соединение с базой данных, и даже проверил орфографию, но все равно почему-то ничего не работает... я все еще новичок в этом GraphQL, поэтому
вот последняя обновленная версия во всем моем репозитории:
https://github.com/SuperShjt/EcommerceStore
И вот скриншот того, что я получаю:
Изображение
вы также можете найти файл журнала, который доказывает, что соединения с базой данных работают
и вот как выглядит моя база данных:


Подробнее здесь: https://stackoverflow.com/questions/791 ... graphqlphp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»