插入未获取现有标记id的标记

pn9klfpd  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(242)

我正在尝试向一本书插入多个或单个标记,我有3个表,如books(books record)、tags(tags record)、books\u tag(books and tags的关系),从这里我应该将标记存储在文本字段中还是单独的表中?问题我有这个想法。
我首先插入带有标签的书籍,然后获取书籍的最后一个添加的id,并尝试将其与标签id一起插入到books\u tag表中。我的代码非常适用于为书籍新添加标签(标签表中不存在),但是如果我尝试插入现有的标签,在books\u tag table上总是将tag id插入为0(应该是tags table中已有的tag id),下面是我的代码

public function addTag($tags, $book_id)
{
    // Loop tags to insert
    foreach ($tags as $tag) {
        // insert tags if not existed
        $this->db->query('INSERT INTO tags (tag) VALUES (:tag) ON DUPLICATE KEY UPDATE tag = :tag');
        // Bind values
        $this->db->bind(':tag', $tag);

        // Execute query
        $this->db->execute();

        // Get lsat id
        $last_tag_id = $this->db->lastId();

        $this->db->query('INSERT INTO books_tag (book_id, tag_id) VALUES (:book_id, :tag_id)');

        // Add tag to books
        $this->db->bind(':book_id', $book_id);
        $this->db->bind('tag_id', $last_tag_id);

        // Execute query
        $this->db->execute();
    }
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题