Я реализовал схему для извлечения действий из системы и отлично работает над извлечением всего списка.Я хочу начать передавать user_id, чтобы фильтровать по пользователю или фильтровать по 10 активностям на прошлой неделе.Моя схема:
Схема для activity.graphql
type ActivityActivity {
id: ID!
activity: String!
user: User @belongsTo
created_at: String!
updated_at: String
deleted_at: String
createdBy: User @belongsTo
updatedBy: User @belongsTo
deletedBy: User @belongsTo
}
extend type Mutation {
createActivityActivity(
id: ID
activity: String!
user_id: Int!
source_type: String!
source_id: Int!
): ActivityActivity @create(model: "Modules\\Activity\\Entities\\Activity")
updateActivityActivity(
id: ID!
activity: String
user_id: Int
source_type: String
source_id: Int
): ActivityActivity @update(model: "Modules\\Activity\\Entities\\Activity")
deleteActivityActivity(id: [ID!]!): [ActivityActivity!]! @delete(model: "Modules\\Activity\\Entities\\Activity")
}
extend type Query {
activity_activity: [ActivityActivity!]! @paginate(model: "Modules\\Activity\\Entities\\Activity")
find_activity_activity(id: Int! @eq): ActivityActivity @find(model: "Modules\\Activity\\Entities\\Activity")
}
extend type User {
activity: [ActivityActivity!]! @hasMany
}
как я могу добавить запрос операторов извлечения, который имеет фильтр или имеет предложение where, например,
query {
activity_activity(count: 10) {
filters{user_id : 10, created_at:2019-01-01}
data{
activity
created_at,
user{name,email,created_at}
}
}
}
илидобавьте предложение where к запросу, например
query {
activity_activity(count: 10) {
where{'user_id = 10 AND created_at=2019-01-01'}
data{
activity
created_at,
user{name,email,created_at}
}
}
}
ОБНОВЛЕНИЕ
Предлагаемое решение - это поле фильтра следующим образом
extend type Query {
activity_activity(
activity: String @where(operator: "like"),
user_id: Int @eq
): [ActivityActivity!]! @paginate(model: "Modules\\Activity\\Entities\\Activity")
find_activity_activity(id: Int! @eq): ActivityActivity @find(model: "Modules\\Activity\\Entities\\Activity")
}
Я внедряю ERP, и в соответствии с проектом системы пользователи должны иметь расширенный поиск, который позволяет им выполнять пользовательскую фильтрацию, например, Не равно (! =), Не в (!), Больше (>) и т. Д. В текущей реализацииУ меня нет выбора, кроме как написать разные параметры фильтра для каждого расширенного поиска.Есть ли другой вариант?