帖子和標籤有許多一對多關係(非常像計算器),所以代碼做沒有ORM應該是:如何通過教條(在symfony中)處理m2m關係(帖子和標籤)?
$dml = "insert into posts(title,body,created) value($title,'{$_POST['post-text']}',now())";
mysql_query($dml,$con);
$pid = mysql_insert_id($con);
//deal with tags
if(isset($_POST['tagnames']))
{
$tags = preg_split('/\s+/',trim($_POST['tagnames']));
$list = "('".implode("',1),('", $tags)."',1)";
$dml = "insert into tags(name,count) values $list on duplicate key update count=count+1";
mysql_query($dml,$con);
$list = "('" . implode("','", $tags) . "')";
$dml = "insert into post_tags(pid,tagId) select $pid,id from tags where name in $list";
mysql_query($dml,$con);
}
如何使用做通過學說?
假設相關的類已經從架構
的難點在於on duplicate key update
部分產生的。
爲了進一步步驟,它可以更加困難,當有人正在編輯posts
...
你認爲它可能不適用於教條?你已經多次提出這個問題了,它會發生,而不是針對SQL的純度,你可以讓代碼實際上只是* work *。有一個簡單的解決方案需要更多的查詢,但也許這是使用ORM的折衷。 – Raise 2010-03-07 15:44:34
我猜這應該是可能的,正如@Steve指出的那樣。你可以詳細說明你提到的解決方案嗎?另外,我認爲這是一個非常頻繁的用例,ORM應該沒有理由錯過,但相關信息其實並不那麼重要... – user198729 2010-03-07 15:52:16
爲什麼不選擇現有的標籤(''SELECT tags。* WHERE tags.name IN('.implode(「,」,$ tags)。');'')並將提交的標籤字符串與每個迭代,並相應地更新/插入? – Raise 2010-03-07 17:43:31