[英]CakePHP having trouble saving data (HABTM)
我正在嘗試創建願望清單。
有用戶和產品模型。 用戶有一個願望清單。 願望清單有很多產品。
我將其設置為用戶擁有心願單,而心願單具有產品的原因是,這樣我可以擁有一個網址,例如wish_lists / add /:product_id
我用id
, user_id
和name
創建了一個名為wish_lists
的表。
我還創建了一個名為wish_list_id
和product_id
的表products_wish_lists
。
我在這里制作的是願望清單控制器:
class WishListsController extends AppController
{
var $hasOne = 'User';
var $hasMany = 'Product';
function beforeFilter()
{
parent::beforeFilter();
$this->Auth->deny('add');
}
function add($id)
{
$user = $this->Session->read("Auth.User");
$this->WishList->set(array(
'User.id' => $user['id'],
'Product.id'=>$id,
'WishList.name'=>'default'
));
if($this->WishList->save())
{
$this->Session->setFlash('This product has been added to your wishlist.', 'flash_good');
}
else
{
$this->Session->setFlash('Error: This product was not added to your wishlist.', 'flash_bad');
}
$this->redirect(array("controller"=>"products","action"=>"view",$id));
}
}
當我轉到localhost/wish_lists/add/1
它每次保存時都會告訴我。 但沒有數據被添加到數據庫中。
不確定我在做什么錯嗎?
我從來沒有那樣做,我總是建立一個$data
數組作為參數1傳遞給save函數。
因此,我不確定該語法是否允許您像完成操作一樣指定模型,即'Model.field'
。 無論如何, $this->WishList->save()
將只保存Wishlist部分。
我認為更好的是:
$saveData = array(
'User'=>array('id'=>$user['id']),
'Product'=>array('id'=>$id),
'WishList'=>array('name'=>'default'));
$this->WishList->saveAll($saveData);
(或者類似的東西,最近三個月我一直在編程ColdFusion,而我的PHP可能會有點兒混亂)
您將數組設置錯誤。 應該是$ data ['User'] ['id'] = 123; $ data ['Product'] ['id'] = 321;
$ this-> Wishlist-> saveAll($ data);
保存名稱沒有意義,因為可以在產品表中找到該名稱。
您可以在這里查看代碼以獲取更多想法https://github.com/Infinitas-Plugins/shop
下面的鏈接中有一個通用的組件方法,該方法將產品保存到購物車或願望清單(不同的數據庫)中,因為它們幾乎是同一件事。
https://github.com/Infinitas-Plugins/shop/blob/master/controllers/components/shop.php#L62
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.