Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii2-模型:查找两个不同日期的范围_Php_Activerecord_Yii2_Yii2 Model - Fatal编程技术网

Php Yii2-模型:查找两个不同日期的范围

Php Yii2-模型:查找两个不同日期的范围,php,activerecord,yii2,yii2-model,Php,Activerecord,Yii2,Yii2 Model,我想选择两个不同日期范围内的项目(datetimetype in Database)。在这种情况下,您希望选择dateStart和dateEnd范围内的所有项目 表格数据示例: 澄清图片: 请注意,我不想在日期之间搜索,例如: Model::find() ->where(['between', 'dateStart', "2017-01-06", "2017-02-11"]) ->all(); 。。因为之间的不在范围内 在这一错误输出中使用中间结果: 例如,首选

我想选择两个不同日期范围内的项目(
datetime
type in Database)。在这种情况下,您希望选择
dateStart
dateEnd
范围内的所有项目

表格数据示例: 澄清图片:


请注意,我不想在日期之间搜索,例如:

Model::find()
    ->where(['between', 'dateStart', "2017-01-06", "2017-02-11"])
    ->all();
。。因为之间的
不在范围内

在这一错误输出中使用中间结果: 例如,首选输出:
通过使用ActiveRecord搜索startDate>=
2017-01-05
和endDate选择的(基于上述表格数据)项,您可以按照以下顺序执行->或其中:

$dateStart = '2017-01-05';
$dateEnd = '2017-01-11';

Model::find()
   ->orWhere(['between', 'dateEnd', $dateStart , $dateEnd]) 
   ->orWhere(['between', 'dateStart', $dateStart , $dateEnd]) 
   ->orWhere(['and', "dateEnd>='".$dateEnd."'", "dateStart<='".$dateStart ."'"])
   ->all();
$dateStart='2017-01-05';
$dateEnd='2017-01-11';
模型::find()
->或其中(['between','dateEnd',$dateStart,$dateEnd])
->或其中(['between','dateStart',$dateStart,$dateEnd])

->orWhere(['和',“dateEnd>='”,“$dateEnd.”,“,”dateStart使用ActiveRecord,您可以像下面这样执行子句序列->orWhere:

$dateStart = '2017-01-05';
$dateEnd = '2017-01-11';

Model::find()
   ->orWhere(['between', 'dateEnd', $dateStart , $dateEnd]) 
   ->orWhere(['between', 'dateStart', $dateStart , $dateEnd]) 
   ->orWhere(['and', "dateEnd>='".$dateEnd."'", "dateStart<='".$dateStart ."'"])
   ->all();
$dateStart='2017-01-05';
$dateEnd='2017-01-11';
模型::find()
->或其中(['between','dateEnd',$dateStart,$dateEnd])
->或其中(['between','dateStart',$dateStart,$dateEnd])

->或其中(['和',“dateEnd>='”,“$dateEnd.”,“DateStart您能解释一下样本之间的日期与搜索样本中的日期之间一天的差异吗?。我不明白您指定的日期与搜索样本之间的差异>=和@scaisEdge请看一看图片,它确实解释了这一点。在使用
between 。你能解释一下样本之间的日期与搜索样本中的日期之间一天的差异吗?。我不明白你分配给样本之间和搜索样本之间的差异>=和@scaisEdge请看一看图片,它确实解释了。我还添加了一个输出示例,当使用
介于
之间时nks,但我正在寻找一个yii2活动记录模型解决方案。我在web上发现了这个解决方案。我不是在寻找SQL解决方案。无论如何,谢谢。好的。我理解。你需要确切的活动记录吗?我担心AR没有这样的机会。但是使用DAO(不是普通的SQL),您可以使用查询生成器。使用此;查询生成器是复杂查询的合适工具。Oleg,是的,我知道,但可能有一个基于运算符的解决方案-因此..我认为使用AR是可能的。可能使用
运算符。->或where(['between',dateEnd',$dateLeft,$dateRight])->或where(['between','dateStart',$dateLeft,$dateRight])->或者在哪里(['and',“dateEnd>=$dateRight”,“dateStartGreat,这就像一个符咒。你能更新你的答案吗?=)谢谢,但我正在寻找一个yii2活动记录模型解决方案。我在web上发现了这个解决方案。我不是在寻找SQL解决方案。无论如何,谢谢。好的。我明白。你需要确切的活动记录吗?我担心AR没有这样的机会。但是使用DAO(不是普通的SQL),您可以使用查询生成器。使用此;查询生成器是复杂查询的合适工具。Oleg,是的,我知道,但可能有一个基于运算符的解决方案-因此..我认为使用AR是可能的。可能使用
运算符。->或where(['between',dateEnd',$dateLeft,$dateRight])->或where(['between','dateStart',$dateLeft,$dateRight])->或者在哪里(['and',“dateEnd>=$dateRight”,“dateStartGreat,这就像一个符咒。你能更新你的答案吗?=)
id | dateStart  | dateEnd
---+------------+-----------+
3  | 2017-01-05 | 2017-01-07
6  | 2017-01-06 | 2017-01-10
8  | 2017-01-05 | 2017-01-11
12 | 2017-01-04 | 2017-01-10
15 | 2017-01-04 | 2017-01-18
17 | 2017-01-08 | 2017-01-10
31 | 2017-01-11 | 2017-01-24
$dateStart = '2017-01-05';
$dateEnd = '2017-01-11';

Model::find()
   ->orWhere(['between', 'dateEnd', $dateStart , $dateEnd]) 
   ->orWhere(['between', 'dateStart', $dateStart , $dateEnd]) 
   ->orWhere(['and', "dateEnd>='".$dateEnd."'", "dateStart<='".$dateStart ."'"])
   ->all();