我在搜索模型中創建日期範圍搜索時遇到此錯誤。Yii2日期範圍搜索
完整性約束衝突 - 警予\ DB \ IntegrityException
SQLSTATE [23000]:完整性約束衝突:在where子句是模糊的1052列 'created_at'
這裏是我的模型
public $start_date;
public $end_date;
public function rules()
{
return [
[['attachment', 'id_client', 'delete_on', 'created_at', 'created_by', 'updated_at', 'updated_by', 'from_location', 'to_location','printed_at', 'lock','verify','verify_by','approved','approved_by'], 'integer'],
[['policy_num'], 'autonumber', 'format'=>'formatPolicy'],
[['policy_num','premium_policy'], 'string'],
[['start_date','end_date'], 'date', 'format'=>'dd-MM-yyyy'],
[['from_location', 'to_location'], 'string', 'max' => 55],
[['location_address'], 'string', 'max' => 100],
[['attachment'], 'required'],
[['deductible'], 'string', 'max' => 100],
[['lock'], 'default', 'value' => '0'],
[['lock'], 'mootensai\components\OptimisticLockValidator']
];
}
這裏是我的搜索模型
public function rules()
{
return [
[['id', 'policy_num', 'attachment', 'id_client', 'delete_on','created_by', 'updated_by', 'printed_at'], 'integer'],
[['cover_rate'], 'number'],
[['start_date','end_date','created_at','updated_at'], 'date','format'=>'yyyy-mm-dd'],
];
}
public function search2($params)
{
$query = AskPolicy::find();
$query->joinWith(['client'])->where(['id_client'=>Yii::$app->user->identity->id_client]);
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
$query->andFilterWhere([
'id' => $this->id,
'policy_num' => $this->policy_num,
'ask_policy.created_at' => $this->created_at,
'ask_policy.updated_at' => $this->updated_at,
'printed_at' => $this->printed_at,
]);
// $query->andFilterWhere(['>=', 'ask_policy.created_at', $this->start_date]);
// $query->andFilterWhere(['<=', 'ask_policy.created_at', $this->end_date]);
$query->andFilterWhere(['like',"(date_format(FROM_UNIXTIME(`created_at`), '%Y-%m-%d'))", $this->start_date])
->andFilterWhere(['like', "(date_format(FROM_UNIXTIME(`updated_at`), '%Y-%m-%d'))", $this->end_date]);
return $dataProvider;
}
如果我使用下面的代碼:搜索開始日期和結束日期不工作
$query->andFilterWhere(['>=', 'ask_policy.created_at', $this->start_date]);
$query->andFilterWhere(['<=', 'ask_policy.created_at', $this->end_date]);
如何Yii2的最佳途徑整數轉換日期時間爲日期範圍搜索?我正在尋找,但沒有找到很好的解釋教程。
仍然無法正常工作 –
錯誤是什麼? –
沒有錯誤。搜索不起作用 –