Laravel的Lighthouse有直接在数据库上执行数据修改CRUD操作的指令:@create
、@delete
和@update
。
一个简单的CRUD创建可以这样实现:
type Mutation {
createPost(title: String!): Post @create
}
这是有效的,但它在没有所有者的情况下创建记录。我的问题是:如何将user_id
分配给新创建的记录
我的意思是,不必使用解析器。
我可以添加一个user_id
参数,如下所示:
type Mutation {
createPost(user_id: ID, title: String!): Post @create
}
但这将导致一个巨大的安全问题——任何人都可以添加或更改其他用户的记录。
您可以使用@inject
指令,如@inject(context: "user.id", name: "user_id")
。
或者,您可以在模型上使用观察器,并使用auth()->id();
将user_id保存在那里