2015-12-20 76 views
3

型號

Class User extends yii\elasticsearch\ActiveRecord{ 
    public function attributes(){ 
     return ['name','role']; 
    } 
} 

行動

$user = new User(['name' => 'my name', 'role' => 2]); 
if ($user->save()) { 
    var_dump(User::findOne(['role' => 2])); 
} 

結果輸出: NULL什麼是問題? Yii2 elasticsearch

問題是什麼?

回答

2

可能與用戶的一個問題驗證使用

$user = new User(['name' => 'my name', 'role' => 2]); 
if ($user->save(false)) { 
    var_dump(User::findOne(['role' => 2])); 
} 

如果用戶保存你必須控制用戶的驗證規則

嘗試。

+0

我沒有一個驗證只保存。我已經嘗試你的腳本不工作瀏覽器返回「null」。這意味着模型被保存並且var_dump執行 –

+0

這不會是問題 - 'var_dump'正在觸發,所以'save'必須返回'true'。 – Beowulfenator

+0

https://github.com/yiisoft/yii2/issues/10437這個問題@cebe已解決 –

0

我懷疑你的User模型沒有必要的驗證規則。換句話說,new User(['name' => 'my name', 'role' => 2])new User()產生的結果相同。

您對namerole有規定嗎?因爲如果你不這樣做,這些屬性不會被設置:

public function rules() 
{ 
    return [ 
     [['name', 'role'], 'safe'], 
    ]; 
} 

實際上,對於測試嘗試手動初始化模型:

$user = new User(); 
$user->name = 'my name' 
$user->role = 2; 
if ($user->save()) { 
    var_dump(User::findOne(['role' => 2])); 
} else { 
    echo 'Validation failed'; 
}