У меня есть проект Symfony 1.4 для отображения products
в представлении продукта category
.Продукты можно просматривать в разных категориях, поэтому у меня есть отношение «многие ко многим» между продуктом и категорией.
У меня также есть различные типы продуктов, поэтому я использовал наследование Doctrine, чтобы определить их, поскольку большинство из них имеют много общегоиз тех же свойств.
Теперь у меня проблема в том, что при попытке добавить товар в категорию я получаю сообщение об ошибке:
Unknown record property / related component "CategoriesFeaturedIn" on "MultiProduct"
CategoriesFeaturedIn - это свойство в Productон содержит категории, в которых он находится, как определено в схеме Doctrine.
MultiProduct наследует от Product, поэтому должно иметь это свойство yes?
Я опубликую ниже мою схему и код, который я используюдля добавления товара в категорию.Надеюсь, кто-то может помочь, и я могу предоставить любую дополнительную информацию, как необходимую.
-
Схема: (не весь файл)
Category:
actAs:
Sluggable:
fields: [title]
columns:
id:
type: integer
primary: true
notnull: true
autoincrement: true
title:
type: string(255)
notnull: true
image:
type: string(255)
store_id:
type: integer
notnull: true
sort_order:
type: integer
relations:
Store:
class: Store
local: store_id
onDelete: CASCADE
foreignAlias: Categories
Parents:
class: Category
refClass: CategoryCategory
foreign: parent_category_id
foreignAlias: Subcategories
CategoryFeaturedProduct:
columns:
category_id:
type: integer
primary: true
product_id:
type: integer
primary: true
relations:
Category:
foreignAlias: FeaturedProducts
onDelete: CASCADE
Product:
foreignAlias: CategoriesFeaturedIn
onDelete: CASCADE
Product:
actAs:
Sluggable:
fields: [title]
columns:
id:
type: integer
primary: true
notnull: true
autoincrement: true
title:
type: string(255)
description:
type: string(255)
link:
type: string(255)
image:
type: string(255)
large_image:
type: string(255)
featured_image:
type: string(255)
sku:
type: string(64)
mpid:
type: string(64)
stock:
type: integer
price:
type: decimal
rrp:
type: decimal
was_price:
type: decimal
rating:
type: decimal
sort_order:
type: integer
promotion_id:
type: integer
manufacturer_id:
type: integer
notnull: true
relations:
Promotion:
class: Promotion
local: promotion_id
onDelete: SET NULL
foreignAlias: Products
Manufacturer:
class: Manufacturer
local: manufacturer_id
onDelete: CASCADE
foreignAlias: Products
Categories:
class: Category
refClass: ProductCategory
foreignAlias: Products
CategoriesFeaturedIn:
class: Category
refClass: CategoryFeaturedProduct
foreignAlias: FeaturedProducts
MultiProduct:
inheritance:
extends: Product
type: column_aggregation
keyField: type
keyValue: 2
Код:
$product = ProductTable::getInstance()->find($prod_id);
$category = CategoryTable::getInstance()->find($cat_id);
$product->addCategoryFeaturedIn($category);
Класс продукции:
public function addCategoryFeaturedIn($category)
{
$this->CategoriesFeaturedIn[] = $category;
}