0

我来自 Python-Django 背景,现在我正在用 PHP 做我的项目。

我在 MySQL 中有三个表:

demo_user_selected_tags

+---------+---------+------+-----+---------+----------------+
| Field   | Type    | Null | Key | Default | Extra          |
+---------+---------+------+-----+---------+----------------+
| id      | int(11) | NO   | PRI | NULL    | auto_increment |
| user_id | int(11) | NO   | MUL | NULL    |                |
| tags_id | int(11) | NO   | MUL | NULL    |                |
+---------+---------+------+-----+---------+----------------+

演示用户

+--------------------+---------------+------+-----+---------+----------------+
| Field              | Type          | Null | Key | Default | Extra          |
+--------------------+---------------+------+-----+---------+----------------+
| id                 | int(11)       | NO   | PRI | NULL    | auto_increment |
| user_name          | varchar(100)  | NO   |     | NULL    |                |
| first_name         | varchar(100)  | NO   |     | NULL    |                |
| middle_name        | varchar(100)  | NO   |     | NULL    |                |
| last_name          | varchar(100)  | NO   |     | NULL    |                |
| image              | varchar(5000) | YES  |     | NULL    |                |
| password           | varchar(80)   | NO   |     | NULL    |                |
| role               | varchar(20)   | NO   |     | NULL    |                |
| org_name_id        | int(11)       | NO   | MUL | NULL    |                |
| timezone_id        | int(11)       | NO   | MUL | NULL    |                |
| city               | varchar(50)   | YES  |     | NULL    |                |
| state              | varchar(50)   | YES  |     | NULL    |                |
| country            | varchar(50)   | YES  |     | NULL    |                |
| street             | longtext      | YES  |     | NULL    |                |
| pin                | varchar(30)   | YES  |     | NULL    |                |
| user_type          | varchar(30)   | NO   |     | NULL    |                |
| status             | int(11)       | YES  |     | NULL    |                |
| primary_mobile     | varchar(100)  | YES  |     | NULL    |                |
| secondary_mobile   | varchar(100)  | YES  |     | NULL    |                |
| primary_landline   | varchar(100)  | YES  |     | NULL    |                |
| secondary_landline | varchar(20)   | YES  |     | NULL    |                |
| primary_email      | varchar(100)  | YES  |     | NULL    |                |
| secondary_email    | varchar(100)  | YES  |     | NULL    |                |
| notes              | longtext      | NO   |     | NULL    |                |
| date_created       | datetime      | YES  |     | NULL    |                |
| date_modified      | datetime      | YES  |     | NULL    |                |
+--------------------+---------------+------+-----+---------+----------------+

演示标签

+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| tags  | varchar(150) | NO   |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+

在用户注册时,我正在尝试为用户存储标签。一个用户可以有多个标签。

所以我的问题是如何编写 SQL 查询,以便我的demo_user_selected_tags表也有一个值?

4

1 回答 1

0

例如,您应该使用像 Doctrine 这样的 ORM。

使用 Doctrine 您可以定义表模型及其与所有主键和外键的关系。之后,创建一个 User 对象就足够了,设置它的属性和标签并保存这个 User 对象 - Doctrine 将为您完成工作并将适当的 ID(值)填充到所有相关表中......

换句话说,假设我们有一个用户对象,它与标签有多对多的关系......我们为这个用户设置一些标签,然后保存用户:

$user = new UserModel();
$user->name = 'some name';
$user->email = 'some@email.com';
foreach($tags as $id => $tag)
    $user->tags[$id] = $tag; // in model definition the tags property is a many-to-many relation for Tags table...
$user->save(); // and the work is done...

这只是如何完成这项工作的一个例子......

于 2012-08-29T10:50:33.200 回答