Проблема
Проблема решена, см. Ниже
Мне нужен идентификатор, созданный с первой мутацией использоваться для второй мутации . В этом случае вторая мутация нуждается в идентификаторе от first для работы.
пример кода:
тип Order and Order_rule (back-end)
type Order {
order_id: ID!
site_id: ID
user_id: ID
customer_name: String
site: Site! @belongsTo
order_rules: [Order_rule!]
}
type Order_rule {
order_rule_id: ID!
order_id: ID
photo_id: ID
product_id: ID
site_id: ID
order: Order! @belongsTo
}
CreateOrder и CreateOrder_rule Mutation (back-end )
createOrder(
site_id: ID!,
user_id: ID!,
customer_name: String!,
): Order @field(resolver: "OrderMutator@create")
createOrder_rule(
order_id: ID!
foto_id: ID
product_id: ID
site_id: ID
): Order_rule @field(resolver: "Order_ruleMutator@create")
Order и OrderRules Mutator аналогичны (back-end)
public function create($rootValue, array $args, GraphQLContext $context)
{
$order = new \App\Order($args);
$order->save();
return $order;
}
Reaction-Apollo
mutation createOrderAndOrderRules(
$site_id: ID!
$user_id: ID!
$customer_name: String!
$order_id: ID!
$photo_id: ID,
$product_id: ID,
)
{createOrder(
site_id: $site_id
user_id: $user_id
customer_name: $customer_name
)
{
order_id
}
createOrder_rule(
order_id: $order_id
photo_id: $photo_id
product_id: $product_id
site_id: $site_id
) {
order_id
photo_id
product_id
site_id
}
}
Итак, используя пример для объяснения: я бы хотел, чтобы order_id был автоинкрементным первичным ключом, который будет сгенерирован из мутации createOrder , который будет использоваться для createOrder_Rule мутация.
Есть ли какие-либо предлагаемые способы заставить эту работу? Я надеялся, что есть способ просто объединить несколько мутаций в одну и просто передать информацию, но у меня есть красный цвет в старых ответах, это было невозможно (пока). И я пытался заставить это работать, но все еще не мог найти способ сделать это.
Любые советы, чтобы сделать эту работу, действительно ценятся! заранее спасибо! :)
Проблема решена:
Использование входных данных и мутатора в серверной части помогает решить проблему. Не использовать последнюю мутацию выше. Только с использованием: Пример кода:
Порядок мутаций
createOrder(
input: OrderInput! @spread
): Order @field(resolver: "OrderMutator@create")
Типы
type Order {
order_id: ID!
site_id: ID
user_id: ID
customer_name: String
site: Site! @belongsTo
order_rules: [Order_rule!]
}
type Order_rule {
order_rule_id: ID!
order_id: ID
photo_id: ID
product_id: ID
site_id: ID
order: Order! @belongsTo
}
Типы ввода
input OrderInput {
order_id: ID!
site_id: ID
user_id: ID
customer_name: String
order_rules: [InputOrder_rule]
}
input InputOrder_rule {
photo_id: ID
product_id: ID
site_id: ID
order_id: ID
}
Заказ мутатора (удален Order_ruleMutator)
Сохранить заказ, добавьте поля Order_rule в Order и сохраните Order_rule.
use App\Order;
use App\Order_rule;
class OrderMutator
{
public function create($rootValue, array $args, GraphQLContext $context)
{
$order = new \App\Order($args);
$order->save();
foreach($args['order_rules'] as $orderRules)
{
$data_array =
array(
'order_id' => $order->id,
'site_id' => $orderRules['site_id'],
'photo_id' => $orderRules['photo_id'],
'product_id' => $orderRules['product_id'],
);
$orderRule = new \App\Order_rule($data_array);
$orderRule->save();
}
return $order;
}
}
Это заставило меня работать, но любые дополнительные советы всегда приветствуются!