在 CakePHP 中保存没有数据的模型(只需在 db 中创建 id)
Posted
技术标签:
【中文标题】在 CakePHP 中保存没有数据的模型(只需在 db 中创建 id)【英文标题】:Saving a model with no data in CakePHP (just create id in db) 【发布时间】:2014-02-21 16:40:03 【问题描述】:我的 Cakephp Cart
模型/表只有一个字段:id
。
它有很多LineItems
。
我没有成功单独保存购物车模型:
$this->Cart->create();
$this->Cart->save();
或者,通过传递一个$data
数组并使用saveAssociated()
:
$data = array(
'Cart' => array(),
'LineItem' => array(
array(
'item_id' => $item_id,
'qty' => $qty,
'price_option_id' => $price_option_id
)
)
);
如果我将useless_field
添加到Cart
表/模型中,并在其中传递一些数据保存。所以很明显,问题在于我有一个模型,它的表只有一个 id
字段,并且没有传递任何其他数据来保存。它不会创建它必须假设为“空”的记录。
我已将'validate' => false
传递给saveAssociated
调用,但它没有任何区别(并且此模型没有验证可忽略)。
有没有办法做到这一点?我错过了什么吗?请赐教!
【问题讨论】:
嗯,这听起来像是一个尴尬的数据库设计。只有一个主键的购物车表有什么用?检查我的购物车插件,我会说我有一些电子商务和 CakePHP 的经验github.com/burzum/cakephp-cart-plugin 这是一款学习玩具。购物车只是为了将 LineItems 绑定到现在,我没有其他特定于购物车的数据要保存。 猜猜你可能已经发现了保存的问题,因为它预计会有一些数据存在,因为这是一个非常不寻常的情况。 感谢您的回复,burzum。您的插件也非常值得学习。 CakePHP 表需要created
和modified
字段,或者让您定义自己的字段(即您可以随意调用它们,但它们的作用相同)。
【参考方案1】:
CakePHP 表需要创建和修改字段,或者让您定义自己的字段(即,您可以随意调用它们,但它们的作用相同)。
在这种情况下,您将使用
$this->Cart->set($data);
$this->Cart->saveAll();
【讨论】:
据我所知,模型不需要创建/修改字段(我有几个没有它们)。使用set()
并没有什么不同。对于只有一个 id 字段的模型,saveAssociated()
或 saveAll()
调用仍会返回 false,即使在与它一起保存 hasMany
关系时也是如此。
你用的是什么版本的蛋糕?以上是关于在 CakePHP 中保存没有数据的模型(只需在 db 中创建 id)的主要内容,如果未能解决你的问题,请参考以下文章