Yii複雜條件查詢


        $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

希望能幫助到你們  ^_^ >~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章