0

私は Python-Django のバックグラウンドを持っており、現在は PHP でプロジェクトを行っています。

MySQL に 3 つのテーブルがあります。

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    |                |
+-------+--------------+------+-----+---------+----------------+

ユーザー登録時に、ユーザーのタグを保存しようとしています。1 人のユーザーに対して複数のタグが存在する場合があります。

私の質問は、demo_user_selected_tagsテーブルにも値があるように SQL クエリを作成する方法です。

4

1 に答える 1

0

たとえば、Doctrine のような ORM を使用する必要があります。

Doctrine を使用すると、すべての主キーと外部キーを使用して、テーブル モデルとそれらの関係を定義できます。その後、User のオブジェクトを作成し、そのプロパティとタグを設定し、この User オブジェクトを保存するだけで十分です。Doctrine が作業を行い、適切な ID (値) を関連するすべてのテーブルに入力します...

つまり、タグと多対多の関係を持つ User オブジェクトがあるとします。この User にいくつかのタグを設定し、User を保存します。

$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 に答える