我来自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 | |
+---------+---------+------+-----+---------+----------------+
demo_user
+--------------------+---------------+------+-----+---------+----------------+
| 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 | |
+--------------------+---------------+------+-----+---------+----------------+
demo_tags
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| tags | varchar(150) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+
在用户注册时,我正在尝试为用户存储标签。用户可以有多个标签。
所以我的问题是如何编写SQL查询以便我的demo_user_selected_tags
表也有值?
答案 0 :(得分:0)
你应该使用像Doctrine这样的ORM。
使用Doctrine您可以定义表模型及其与所有主键和外键的关系。之后,只需创建User对象,设置其属性和标签,然后保存此User对象即可 - Doctrine将为您完成工作,并将适当的ID(值)填入所有相关表格......
换句话说,假设我们有一个User对象,它与Tags有多对多的关系......我们为这个用户设置了一些标签,然后保存用户:
$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...
这只是一个关于如何完成这项工作的例子 ......