$obj = $this->find();
$obj->where(array(
'and',
array(
'or',
// 要添加的开始时间在已存在的活动里
array(
'AND',
['<=', 'start_time', $param['startTime']],
['>=', 'end_time', $param['startTime']],
),
// 要添加的结束时间在已存在的活动里
array(
'AND',
['<=', 'start_time', $param['endTime']],
['>=', 'end_time', $param['endTime']]
),
// 要添加的结束时间在已存在的活动里
array(
'AND',
['>=', 'start_time', $param['startTime']],
['<=', 'end_time', $param['endTime']]
)
),
array('shop_id' => $param['shopId'], 'status' => '1')
));
if (isset($param['id']) && $param['id'] > 0)
{
$obj->andWhere(['!=', 'id', $param['id']]);
}
$select = 'id';
$result = array();
$obj->orderBy('create_time desc');
$result = $obj->select($select)->asArray()->one();
// dd($obj->createCommand()->getRawSql());
用于复杂的where查询 sql语句是下面这样
SELECT
`id`
FROM
`tablename`
WHERE
(
(
(`start_time` <= '1568563200')
AND (`end_time` >= '1568563200')
)
OR (
(`start_time` <= '1568563201')
AND (`end_time` >= '1568563201')
)
OR (
(`start_time` >= '1568563200')
AND (`end_time` <= '1568563201')
)
)
AND (
(`shop_id` = '112324')
AND (`status` = '1')
)
AND (`id` != 2)
ORDER BY
`create_time` DESC
希望能帮助到你们 ^_^ >~