Как се редактира one-to-many relations?

  • Автор Автор djman
  • Начална дата Начална дата

djman

Registered
Примерно имам
post_id | title
----------------
1 | Тест

и

tag_id | post_id | name
---------------------------
1 | 1 | tag1
2 | 1 | tag2
3 | 1 | tag3


И се изкарват във вида "tag1, tag2, tag3" в текстово поле или чрез checkbox-ове. Та, как се редактира? Примерно tag2 да стане ttagg или въобще да се махне...? Таблиците са примерни, но въпроса си стои :/
 
Ти като ги изкарваш ще им взимаш и tag_id за съответния запис и после чрез него си ги триеш.

Изкарваш си ги чрез две обединени заявки или с JOIN. Също можеш да се поинтересуваш в нета какво значи Active Record.
 
Аз го имам същото нещо. Ползвам 3 таблици:

tags - всички тагове
articles - всички статии/постове

article_tags - таговете за постовете

Когато искам да покажа само един артикъл/пост ползвам join, а когато искам да листна всички GROUP_CONCAT() =)
 
Fakeheal каза:
Аз го имам същото нещо. Ползвам 3 таблици:

tags - всички тагове
articles - всички статии/постове

article_tags - таговете за постовете

Когато искам да покажа само един артикъл/пост ползвам join, а когато искам да листна всички GROUP_CONCAT() =)

Това всъщност ще свърши работа :) А при самия ъпдейт в article_tags как го правиш?
 
Ето това е от метода ми едит на article:
В полето тагс във формата ги разделям принципно със запетая. Пък и ползвам един плъгин за tagsuggest от вече записани тагове. :)

Ако нещо е неясно питай, то принципно другите методите от имената им се подразбира какво правят :)

Код:
$tags = str_replace(',','.',$this->input->post('tags'));
$tags = trim($tags);
$tags = explode('.', $tags);
$date = time();
$tags_id = array();

foreach($tags as $tag)
{
	if (empty($tag))
		continue; 

	if(!$this->tag->tag_exist(trim($tag)))
	{
		$add_tag = $this->tag->add_tag(trim($tag));
		$id = $this->tag->get_tag_id(trim($tag));
		$id = $id->tag_id;
		array_push($tags_id, $id);
	}
	else
	{
		$id = $this->tag->get_tag_id(trim($tag));
		$id = $id->tag_id;
		array_push($tags_id, $id);
	}
}

А да и после ъпдейтвам сами артикъл и ако няма грешка (при заявката или нещо такова) имам:

Код:
#Delete old tags
$delete_tags = $this->tag->delete_tags($q_id);

#Add new tags
foreach($tags_id as $tag_id)
{
	$this->tag->add_tags($q_id, $tag_id);
}
 

Back
Горе