多重突变:如何让第一个突变将 ID 传递给第二个突变
Multiple mutation: how to have first mutation pass ID to second mutation
问题
问题已解决见下文
我希望使用 第一次突变 创建的 ID 供
第二次突变。在此,second mutation 需要来自 first 的 ID 才能工作。
示例代码:
类型订单和Order_rule(后端)
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 变更(后端)
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 相似(后端)
public function create($rootValue, array $args, GraphQLContext $context)
{
$order = new \App\Order($args);
$order->save();
return $order;
}
react-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
}
Mutator 顺序 (删除 Order_ruleMutator)
保存订单,将 Order_rule 字段添加到订单并保存 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;
}
}
这对我有用,但随时欢迎任何其他提示!
问题已解决:
在 back-end 中使用输入和修改器有助于解决问题。
不再使用上面的最后一个突变。仅使用:
示例代码:
变异顺序
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
}
Mutator 顺序 (已删除 Order_ruleMutator)
保存订单,将 Order_rule 字段添加到订单并保存 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;
}
}
这对我很有用,但欢迎任何额外的提示!
问题
问题已解决见下文
我希望使用 第一次突变 创建的 ID 供 第二次突变。在此,second mutation 需要来自 first 的 ID 才能工作。
示例代码:
类型订单和Order_rule(后端)
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 变更(后端)
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 相似(后端)
public function create($rootValue, array $args, GraphQLContext $context)
{
$order = new \App\Order($args);
$order->save();
return $order;
}
react-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
}
Mutator 顺序 (删除 Order_ruleMutator)
保存订单,将 Order_rule 字段添加到订单并保存 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;
}
}
这对我有用,但随时欢迎任何其他提示!
问题已解决:
在 back-end 中使用输入和修改器有助于解决问题。 不再使用上面的最后一个突变。仅使用: 示例代码:
变异顺序
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
}
Mutator 顺序 (已删除 Order_ruleMutator)
保存订单,将 Order_rule 字段添加到订单并保存 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;
}
}
这对我很有用,但欢迎任何额外的提示!