2015-12-20 2 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

не имеют Validate только сохранение. Я попробовал, чтобы ваш скрипт не работал с браузером «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().

У вас есть правила для name и role? Потому что если вы этого не сделаете, не будут установлены эти атрибуты:

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'; 
} 
Смежные вопросы