2015-12-20 48 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'; 
}