我已經構建了一個CakePHP應用程序,該應用程序允許用戶創建帖子併爲其添加標籤(主題)。數據庫和關聯的結構可以在這裏看到:Setting up contains for a join table in CakePHP保存需要唯一的關聯模型數據
我已經成功地使用Contain通過連接表拉出數據。但現在我試圖構建用戶輸入主題的部分,然後將它保存在主題表和Topic_post表中。
我有下面的代碼我增加新的崗位方法:
if ($this->request->is('post'))
{
//$this->Post->create();
if ($this->Post->save($this->request->data))
{
// Save extra data
$this->Post->saveField('user_id', $this->Auth->user('id'));
$this->Post->saveField('datetime', date('Y-m-d H:i:s'));
$this->Post->saveField('modified', date('Y-m-d H:i:s'));
$this->Post->saveField('status', 1);
// Build slug
$post_title = Sanitize::html($this->request->data['Post']['title'], array('remove'=>true, 'quotes' => ENT_NOQUOTES));
$post_title = String::truncate($post_title, 50, array('exact'=>false,'html'=>false,'ending'=>''));
$this->Post->saveField('slug', Inflector::slug($post_title));
// Redirect the user to the newly created post (pass the slug for performance)
$this->redirect(array('controller'=>'posts','action'=>'view','id'=>Tiny::toTiny($this->Post->id),'slug'=>$this->Post->slug));
}
else
{
$this->Session->setFlash('Server broke!');
}
}
所以我現在需要做的是保存其鍵入此視圖相關主題數據:
<?php echo $this->Form->create(); ?>
<?php echo $this->Form->input('Post.title'); ?>
<?php echo $this->Form->input('Post.content', array('type'=>'textarea','label'=>false)); ?>
<?php echo $this->Form->input('Topic.title', array('type'=>'textarea','label'=>'Topics')); ?>
<button type="submit" class="orangeButton small">Create</button>
<?php echo $this->Form->end(); ?>
我看過CakePHP文檔,它看起來像saveAll是我需要的東西?但我很困惑,因爲我不能100%確定如何使用它也很重要的一點是,用戶可以將多個主題保存到數據庫,而主題本身都是唯一的,例如,您不能創建已經存在的主題,而只是使用鏈接器的現有ID。
任何人都可以幫忙嗎?因爲我覺得這是相當複雜的...
有沒有更新?謝謝 – Cameron 2012-04-09 14:34:55