我使用Yii 2.1和Yii2-elasticsearch 2.0.3与elasticsearch 1.5.0服务器一起尝试索引成员模型以进行更强大的搜索。我有一个common\indexes\Member
模型,扩展yii\elasticsearch\ActiveRecord
并设置我想索引的属性。Yii2 elasticsearch setAttributes()不工作
namespace common\indexes;
use yii\elasticsearch\ActiveRecord;
class Member extends ActiveRecord {
/**
* @return array the list of attributes for this record
*/
public function attributes() {
// path mapping for '_id' is setup to field 'id'
return ['id', 'given_name', 'family_name', 'email'];
}
}
我无法在common\indexes\Member
模型设置我想要的属性。
我正在创建对象的新实例,并尝试通过ActiveRecord setAttributes()方法设置属性值,但似乎没有设置任何值。
$index = new common\indexes\Member();
$index->setAttributes(['given_name' => 'Test', 'family_name' => 'User', 'email' => '[email protected]']);
$index->save();
这似乎创建一个空记录。如果我手动逐个设置属性,一切似乎都奏效,并且在elasticsearch数据库中创建了具有正确属性的记录。
$index = new common\indexes\Member();
$index->given_name = 'Test';
$index->family_name = 'User';
$index->email = '[email protected]';
$index->save();
我使用的setAttributes()
方法不正确地为elasticsearch的ActiveRecord的?我是否需要以不同的方式设置我的elasticsearch模型?
它是你的代码中的错字,你实际上从'AbstractIndex'而不是'elasticsearch \ ActiveRecord'定义为您声称? – Blizz
是的,这是一个错字。 –