这两张表的关系是什么?


what is the relation of this two tables?

items table

    protected static $_properties = array(
    'id',
    'product_code',
    'item_color_id',
    'item_size_type_id',
    'classification_id',
    'name',
    'display_name',
    'usual_price',
    'selling_price',
    'point_ratio',
    'description',
    'publish_start_datetime',
    'publish_end_datetime',
    'publish_flag',
    'created_at',
    'updated_at',
    'deleted_at',
);

图像表:

    protected static $_properties = array(
    'id',
    'file_name',
    'content_type',
    'created_at',
    'updated_at',
    'deleted_at'
);

item_image表:

    protected static $_properties = array(
    'id',
    'item_id',
    'image_id',
    'type',
    'view_order'
);

为什么需要item_image表?物品和图像的关系是什么?多对多还是一对多?问题是,当我插入到图像表没有错误,但如果我从图像表中删除会有一个错误(外键问题)。为什么会发生这种情况?如何从表中删除图像

通常这种设置是在itemsimages之间具有多对多关系。item_image允许您设置任何item和任何image之间的关系,任何次数。从image表中删除时遇到麻烦,因为它与item_image表中的一行相关。首先必须删除item_image中包含该图像的所有关系,然后从image表中删除该行。

数据库是这样设置的,这样你的关系就不会过时或孤立。如果您从image表中删除了一行,但在item_image中保留了与被删除的行相关的行,那么这种关系将指向任何东西,并可能导致问题。

这是假设这是一个典型的多对多关系,如果你不知道数据库的结构,你应该在做任何改变之前和做它的人谈谈。

如果我说错了请指正。根据数据库,这可能是一个多对多的关系,因为itemsimages之间创建了一个item_image表。

所以如果你想从图像表中删除一个项目,那么首先你必须检查imageitemid是否都存储在item_image中。如果它存在,那么你可以从你的image_item

中删除image表中id = image_id的图像。