cakephp价格检查
我有一个包含日期价格的输入框矩阵。如果数据库中没有特定日期的价格,则输入框显示0。我有以下代码,将输入框中键入的价格保存到数据库中。它不会保存所有的0值,只保存新的价格 这很好。然而,我现在发现了一个问题。如果其中一个输入从数据库中显示了一个值,比如$10,并且我现在想将其设置为0,那么代码将不会这样做 仅当值大于等于0时,才会保存。我还没能做最后的检查 储蓄的条件是 1.如果该值是数值 2.如果它是0并且在数据库中已经有一个条目,则保存 3.如果它在数据库中没有值且大于0 4.如果它为0且在数据库中没有值,则不保存cakephp价格检查,php,cakephp,Php,Cakephp,我有一个包含日期价格的输入框矩阵。如果数据库中没有特定日期的价格,则输入框显示0。我有以下代码,将输入框中键入的价格保存到数据库中。它不会保存所有的0值,只保存新的价格 这很好。然而,我现在发现了一个问题。如果其中一个输入从数据库中显示了一个值,比如$10,并且我现在想将其设置为0,那么代码将不会这样做 仅当值大于等于0时,才会保存。我还没能做最后的检查 储蓄的条件是 1.如果该值是数值 2.如果它是0并且在数据库中已经有一个条目,则保存 3.如果它在数据库中没有值且大于0 4.如果它为0且在数
if (isset($this->data['Rate'])){
// for each rate
foreach($this->data['Rate'] as $rate_id => $room){
// for each room type
foreach($room as $room_id => $room){
$price_for_today = isset($room['Price'][$key]) ? $room['Price'][$key] : 0;
// get existing availabilities is num (get this from previous date loop)
$today = ''.$date.' 00:00:00';
$conditions = array('Availability.date' => $today,'Availability.room_id'=>$room_id);
$this->Availability->contain();
$result = $this->Availability->find('all',array('order'=>'Availability.room_id ASC', 'conditions'=>$conditions));
$avail_id = $result[0]['Availability']['id'];
// check prices
$check_prices = "SELECT * FROM prices
WHERE rate_id = '".$rate_id."' AND availability_id = '".$avail_id."'";
$prices_result = $this->Availability->query($check_prices);
// if new prices > 0.00
if($price_for_today>0 && is_numeric($price_for_today)){
// better checking needed!
if($prices_result){
$setprices = "UPDATE prices SET price = '".$price_for_today."'
WHERE rate_id = '".$rate_id."' AND availability_id = '".$avail_id."'";
$update = $this->Availability->query($setprices);
} else {
$setprices = "INSERT INTO prices (price, availability_id, rate_id)
VALUES ('".$price_for_today."', '".$avail_id."', '".$rate_id."')";
$insert = $this->Availability->query($setprices);
}
}
//$errors[] = $setprices;
} // end rooms loop
} // end Rates loop
你的问题在哪里
> // if new prices > 0.00
> if($price_for_today>0 &&
> is_numeric($price_for_today)){
在这里,您指定今天的$prices\u必须大于0,因此如果您有一个价格,并且希望今天将其设置为0,那么您将不会执行任何操作。。。你应该使用
if(($price_for_today>0 && is_numeric($price_for_today)) || (!empty($prices_result) && $price_for_today==0 && is_numeric($price_for_today))){
如果您更改它,它现在将进入if并进行更改
我建议您不要使用查询功能,除非非常必要。您应该为price创建一个模型(如果您还没有这样做的话),然后使用关联(hasMany、HasOne、HABTM)或使用$this->loadModel('price')直接在控制器中加载模型。然后像往常一样在条件和字段中使用find“all”。这个建议是按照它的意图使用蛋糕,而不是必不可少的。如果您这样做,还可以执行保存、更新字段、读取。。。把支票和一切都留给蛋糕吧。谢谢你。是的,我注意到函数中的查询。我已经为我开发了这个,并且存在一些问题。我目前正在寻找一个程序员来解决soem的问题,我有。谢谢