我在Yii2框架中访问ActiveRecord模型的ID时遇到问题。当我保存刚刚创建的模型时,我无法获取新对象的id字段。
$house = new House;
$house->save();
$hid = $house->id;
$ hid值为空字符串''。
问题是我正在创建新模型,以便我可以将新的id传递给处理文件移动的线程进程,同时创建数据库行。线程启动,在json切片和数组填充后,第一次插入在sql condition(where)语句中失败。
我研究了许多答案,他们指出了几个缺陷:
稍后在代码中我计划通过关系链接模型,但我认为由于此错误而失败,所以我也使用$ hid值来填充相关模型中的外键字段。
帮助。请。
答案 0 :(得分:1)
可能是以这种方式尝试的验证问题
$house = new House;
if ($house->validate()) {
$house->save();
$hid = $house->id;
} else {
$errors = $house->errors;
var_dump($errors)
}
如果你看到var_dump的结果,你的验证失败了(例如:一些必填字段......),你需要在你的房屋模型中更改适当的验证规则。
否则你不能尝试
$house->save(false); //this way the validation is not executed
(仅用于调试porpose的save(false))
答案 1 :(得分:-1)
这是通过的代码:
$house = new House;
$house->name = 'name'; [field set as required in model rules array]
$house->description = 'description'; [field set as required in model rules array]
$house->save();
$hid = $house->id;
约定和配置,非常整洁。