2013-11-28 31 views
0

我是新来蛋糕和数据库目前工作。我有一个像下面的模型:实现大于和小于cakephp模型sql

/** 
* 
*I am editing a app which is done in version 1.3 
* /app/models/get_provider.php 
*/ 

function getListByCategory($gal_category_id,$gal_location_id,$package,$whether_list = false,$limit=999,$order_by = ""){ 
$conditions = array("GalProvider.status"=>1,"GalProvider.gal_category_id"=>$gal_category_id,"GalProvider.gal_location_id"=>$gal_location_id); 
------- 
------- 
} 

$package变量是一个特殊的一个具有以下条件:

if $package = 1,starting_package will be between 15000 to 30000 
if $package = 2,starting_package will be between 30001 to 45000 
if $package = 3,starting_package will be between 45001 to 60000 

所以我会如何对我的$conditions变量添加这where条件?

回答

1

像这样的东西应该这样做:

<?php 
function getListByCategory($gal_category_id,$gal_location_id,$package,$whether_list = false,$limit=999,$order_by = "") { 
    $conditions = array(
     "GalProvider.status" => 1, 
     "GalProvider.gal_category_id" => $gal_category_id, 
     "GalProvider.gal_location_id" => $gal_location_id 
    ); 

    switch ($package) { 
     case 1: 
      $start = 1500; 
      $end = 3000; 
      break; 
     case 2: 
      $start = 30001; 
      $end = 45000; 
      break; 
     case 3: 
      $start = 45001; 
      $end = 60000; 
      break; 
    } 

    $conditions['AND']['starting_package >='] = $start; 
    $conditions['AND']['starting_package <='] = $end; 
------- 
------- 
} 

所以,你确定你的范围的起点和终点,然后将它们添加到您的查询,一个“和”锁中,以确保他们都采取考虑到。

见DOCO在http://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Models.html#complex-find-conditions

+0

我讨厌switch语句(虽然我很享受在PHP字符串switch语句),所以这里的另一种选择,这也将添加遵循相同的格式将来的包工作:'$启动= 15000 * $ package +($ package> 1?1:0); $ end = 15000 *($ package + 1);' – iso27002