我有这个选择器:
$this->Table->find('list',array('contain'=>false,'conditions'=>array('status'=>1,'unit_id'=>null,'country_id'=>$countryId,'eday'=>$eday),'fields'=>'id'));
这很完美。但现在我需要另一个我无法找到如何做到这一点;)
我需要从Table中选择所有记录,但条件为:
'eday'>=$eday AND 'eday'<$eday+7
它的这个位置很容易吗?也许这是一个愚蠢的问题,但我没有在PHP中使用exp;)
答案 0 :(得分:1)
在cakephp中,DECLARE @input string = @"/so.json";
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
@meta =
EXTRACT Id string
FROM @input
USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor();
@items =
EXTRACT purchaseDate string
FROM @input
USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor("body.nprobe.items[*]");
@itemsFull =
SELECT Id,
purchaseDate
FROM @meta
CROSS JOIN @items;
OUTPUT @itemsFull
TO "/items_full.csv"
USING Outputters.Csv();
条件的等价物是
示例:and
column1 = 'value' AND column2 = 'value'
所以你的查询构建器就像这样
'AND' => array(
'column1' => 'value',
'column2' => 'value'
)
答案 1 :(得分:0)
只需在当前条件数组中传递一个AND数组:
$this->Table->find('list',array('contain'=>false, 'conditions'=>array('status'=>1,'unit_id'=>null,'country_id'=>$countryId,'eday'=>$eday, AND => array( array('eday >=' => $eday) , array( 'eday <' => $eday+7) )), 'fields'=>'id' ));
答案 2 :(得分:0)
您尝试过这样的事情吗?
$conditions['status'] = 1;
$conditions['unit_id'] = null;
$conditions['country_id'] = $countryId;
$conditions['eday >='] = $eday;
$conditions['eday <'] = $eday + 7;
$this->Table
->find('list') //either use this
->find('all') //or use this
->find() //or this
->where($conditions)
->select(['addFiledsToSelectHere'])
这看起来更干净。