andFilterWhere()函式找不出某個int型別欄位為0的資料

liuxiaojun828發表於2016-11-12

首先本人剛接觸YII2,  小知道都統計起來的。


andFilterWhere()函式找不出某個int型別欄位為0的資料

$query = Equip::find()->andFilterWhere(['and','is_delete',0]);

該欄位的值只有0和1。資料庫中頁確實存在該欄位值為0的資料,但是這樣寫提示沒有找到資料,把0改成1能找出該欄位值為1的資料。如果不加andFilterWhere語句,那麼會正常顯示所有的資料,包括is_delete欄位為0的資料。


先說解決辦法, 改成下面的形式 :

$query = Equip::find()->andFilterWhere(['is_delete' => 0]);
或者
$query = Equip::find()->andFilterWhere(['and', ['is_delete' => 0]]);

接下來分析 為什麼會出現這麼有趣的現象

is_delete = 1 可以達到預期, 不加這個條件也可以達到預期, 偏偏 is_delete = 0 有問題


原因是按照你寫的那樣, 最終生成的sql會是 :

select * from table where is_delete and 0 (或者1);

有意思的是, select * from table where fieldName 這樣的語句並不會報錯.

我試了下, fieldName 為空, 為null, 為0的時候, 查不到.

其他時候均能查到, 但是此種情況下, 不會用到索引.


yii 資料model->save()相關

$this->model = Customer::model();
$client = $_POST['client'];
$this->model->attributes 
   =$client;
$this->model->create_user    =$create_user;
$this->model->create_date    =$create_date;
$this->model->save();
$customer_id =$this->model->attributes['id']; //獲取save插入後的id



上面是半年前寫的,有不足,下面重新寫著說明一下。

$customer =Customer::model();
$post_data = $_POST['client'];
$
customer->attributes    =$post_data;
$
customer->create_user    =Yii::app()->user->getId();
$
customer->create_time    =time();
$
customer->save();
$customer_id = $customer->id;  //這樣獲取save插入後的id最方便
$customer_id =$
customer->attributes['id']; //這樣也可以 獲取save插入後的id
$customer_info = $
customer->attributes;  //這樣可以獲取save插入後的相應model所有屬性

直接 $this->model->id 不是更簡單?

http://blog.sina.com.cn/s/blog_ea7f2ce40102wods.html        

yii model->save() 返回false

 yii model層操作總結 http://www.cnblogs.com/xieqian111/p/5212505.html

$model->save()執行時,如何不要驗證?

public boolean save(boolean $runValidation=true, array $attributes=NULL)
$model->save(false);   //不驗證


1.按鈕的id為btnzhuce
==》 控制按鈕為禁用:
$("#btnzhuce").attr({"disabled":"disabled"});
==》控制按鈕為可用
 $("#btnzhuce").removeAttr("disabled");//將按鈕可用



http://blog.csdn.net/dc769319/article/details/53022570    不修改原始檔  直接 重新整理驗證碼

http://www.yiichina.com/tutorial/410

http://www.360us.net/article/17.html    驗證碼的使用

https://segmentfault.com/a/1190000005910783  重寫源生驗證碼



先設定 $model->allow_comment = 1
<?= $form->field($model, 'allow_comment')->checkbox([ 'label' => '允許評論']) ?>
這樣這預設選中了








相關文章