【发布时间】:2020-03-14 05:43:49
【问题描述】:
在查询生成器的文档中,说在查询后我必须创建一个.fetch() 或 .paginate() 但在这种情况下我收到:
{message: "确保调用 fetch 来执行查询"
我尝试了什么:
async show({request}){
const { page, pageSize } = request.get();
const filter = request.input('filter')
const bIds = await BookUnit
.query()
.where('book_id', request.params.id)
.ids()
const questions = await Question
.query()
.whereIn('book_unit_id', bIds)
.with('book_unit')
//Filtros
if(filter){
if(filter.search("description") !== -1){
let description = filter.match(/(?<=description~contains~').*?(?=')/)
questions.where('description', 'ilike', '%'+description[0]+'%')
}
if(filter.search('unit') !== -1){
let unit = filter.match(/(?<=unit~contains~').*?(?=')/)
questions.where('unit', '=', unit[0])
}
}
return await questions.paginate(page,pageSize)
我的模型:
class Book extends Model {
book_units() {
return this.hasMany("App/Models/BookUnit").select(
"id",
"description as unit"
);
}
book_unit_questions() {
return this.manyThrough("App/Models/BookUnit", "book_unit_questions");
}
user () {
return this.belongsTo('App/Models/User')
.select('id', 'username')
}
}
class BookUnit extends Model {
static get table () {
return 'book_unit'
}
book_unit_questions() {
return this.hasMany('App/Models/BookUnitQuestion')
}
user () {
return this.belongsTo('App/Models/User')
.select('id', 'username')
}
}
class BookUnitQuestion extends Model {
static get table () {
return 'book_unit_question'
}
user () {
return this.belongsTo('App/Models/User')
.select('id', 'username')
}
book_unit(){
return this.belongsTo('App/Models/BookUnit')
.select('id','description', 'sequence', 'unit')
}
book(){
return this.belongsTo('App/Models/Book')
}
book_unit_questions() {
return this.belongsTo('App/Models/BookUnit')
}
}
抱歉,我无法发布我的迁移,因为我收到消息“看起来您的帖子主要是代码;请添加更多详细信息”,如果您可以创建聊天,我可以发送
@编辑:
我试过了:
async show({ request }){
const { page, pageSize } = request.get();
const filter = request.input('filter')
const bIds = await BookUnit
.query()
.where('book_id', request.params.id)
.ids()
if (filter) {
if (filter.search("description") !== -1) {
let description = filter.match(/(?<=description~contains~').*?(?=')/)
questions.where('description', 'ilike', '%' + description[0] + '%') //Add new condition
}
if (filter.search('unit') !== -1) {
let unit = filter.match(/(?<=unit~contains~').*?(?=')/)
bIds.where('unit', '=', unit[0]) //Add new condition
}
}
const questions = Question
.query()
.whereIn('book_unit_id', bIds)
.with('book_unit')
if (filter) {
if (filter.search("description") !== -1) {
let description = filter.match(/(?<=description~contains~').*?(?=')/)
questions.where('description', 'ilike', '%' + description[0] + '%') //Add new condition
}
}
return await questions.paginate(page, pageSize) //Now query is executed
but now i have:
> bIds.where is not a function",
@Edit new tentative:
async show({ request }){
const { page, pageSize } = request.get();
const filter = request.input('filter')
const bIds = await BookUnit
.query()
.where('book_id', request.params.id)
.ids()
const questions = Question
.query()
.with('book_unit', (builder) => {
if(filter){
if (filter.search('unit') !== -1) {
let unit = filter.match(/(?<=unit~contains~').*?(?=')/)
builder.where('unit', '=', unit[0]) //Add new condition
}
}
})
.whereIn('book_unit_id', bIds)
//Filtros
if (filter) {
if (filter.search("description") !== -1) {
let description = filter.match(/(?<=description~contains~').*?(?=')/)
questions.where('description', 'ilike', '%' + description[0] + '%') //Add new condition
}
}
return await questions.paginate(page, pageSize) //Now query is executed
} [![enter image description here][1]][1]
找不到单位,但问题继续显示在我的网格中...
【问题讨论】:
-
你能分享你的迁移文件+模型吗?
-
@CrBast 请检查我的编辑