0

我想从外部源中保存一些数据,这些数据除了数据本身之外没有 id(例如来自 ebay api 的 Red、Used、Volvo 等)。

所以我已经像这样设置了我的表:

aspectHeaders
id INT AUTO_INCREMENT PRIMARY KEY
name varchar(30)
UNIQUE KEY `NAME`(`name`)

aspects
id INT AUTO_INCREMENT PRIMARY KEY
name varchar(30)
aspectHeader_id INT
UNIQUE KEY `DETAIL` (`aspectHeader_id`,`name`)

aspectHeaders 将包含:

7 Manufacturer

和方面将包含:

1 Volvo 7

因此,在两个阶段中,我可以检查任一表中是否存在任何给定数据,如果不存在则将其插入。但我的问题是我可以在 1 个阶段完成吗?也就是说,是否有代码来检查数据是否存在,如果不存在则插入它,并且无论哪种方式都返回 id?

希望这足够详细。

谢谢

4

2 回答 2

1

为此,我通常使用 touch() 之类的方法,它可以在内部完成所有的魔法。

// always returns id (or false on failure)
public function touch($data) {
    // check if it already exists
    if (exists) {
         // return id and do nothing
    }
    // create() and save()
    // return id or false if invalid data
}
于 2013-04-19T17:30:52.360 回答
1

如果“代码”是指单个 MySQL 语句,我认为没有。或者至少我认为不会进行过于复杂的多查询查询。

只需制作一个alreadyExists()方法(或其他东西)并在插入之前检查 - 例如:

if(!$this->MyModel->alreadyExists($data)) {
    //do insert here
}
于 2013-04-19T16:03:39.250 回答