У меня есть следующие модели:
ServiceCategory:
'use strict'
const Model = use('Model')
class ServiceCategory extends Model {
services() {
return this
.belongsToMany('App/Models/Service')
.withTimestamps()
}
}
module.exports = ServiceCategory
'use strict'
/** @type {import('@adonisjs/lucid/src/Schema')} */
const Schema = use('Schema')
class ServiceCategorySchema extends Schema {
up () {
this.create('service_categories', (table) => {
table.increments()
table.string('name')
table.string('slug').index()
table.text('description').nullable()
table.string('icon').nullable()
table.boolean('is_activated').default(false).notNullable().default(true)
table.timestamps()
table.timestamp('deleted_at').nullable()
})
}
down () {
this.drop('service_categories')
}
}
module.exports = ServiceCategorySchema
Сервис:
'use strict'
const Model = use('Model')
class Service extends Model {
categories() {
return this
.belongsToMany('App/Models/ServiceCategory')
.withTimestamps()
}
}
module.exports = Service
'use strict'
/** @type {import('@adonisjs/lucid/src/Schema')} */
const Schema = use('Schema')
class ServiceSchema extends Schema {
up () {
this.create('services', (table) => {
table.increments()
table.string('name')
table.string('slug').index()
table.text('description').nullable()
table.string('icon').nullable()
table.float('price', 10, 2)
table.boolean('is_negotiable').default(true)
table.boolean('is_activated').default(false).notNullable().default(true)
table.timestamps()
table.timestamp('deleted_at').nullable()
})
}
down () {
this.drop('services')
}
}
module.exports = ServiceSchema
Проблема в том, что когда я пытаюсьполучить все ServiceCategories с их Services Я просто получаю ServiceCategories с пустым массивом сервисов:
const serviceCategories = await ServiceCategory
.query()
.with('services')
.fetch()
[
{
"id": 1,
"name": "Beleza",
"slug": "beleza",
"description": null,
"icon": null,
"isActivated": true,
"createdAt": "2019-10-21T10:43:32.000Z",
"updatedAt": "2019-10-21T10:43:32.000Z",
"services": []
}
]
Intermediateтаблица:
'use strict'
/** @type {import('@adonisjs/lucid/src/Schema')} */
const Schema = use('Schema')
class ServiceServiceCategorySchema extends Schema {
up () {
this.create('service_service_category', (table) => {
table.increments()
table.integer('service_id').unsigned().index()
table
.foreign('service_id')
.references('id')
.inTable('services')
.onDelete('cascade')
table.integer('service_category_id').unsigned().index()
table
.foreign('service_category_id')
.references('id')
.inTable('service_categories')
.onDelete('cascade')
table.timestamps()
})
}
down () {
this.drop('service_service_category')
}
}
module.exports = ServiceServiceCategorySchema
Но я могу прикрепить service
к service_category
:
const service = await Service.create(params)
await service.categories().attach([serviceCategoryId])
Это успешно связывает service
с service category
всводная таблица.
Теперь, почему я могу добавить отношение, но не могу его загрузить?