gpt4 book ai didi

php - Yii2 在运行时将模型添加到 hasMany 关系中

转载 作者:行者123 更新时间:2023-12-02 20:32:47 24 4
gpt4 key购买 nike

有没有办法将新对象添加到 hasMany 关系中,而无需从数据库重新获取?

我的意思是,如果我有一个名为 FileList 的 ActiveRecord,它具有以下关系和加法器函数:

public function getFiles()
{
return $this->hasMany(File::className(), ['fileListId' => 'id']);
}

public function addFile()
{
$file = new File([
'fileListId' => $this->id
]);

return $file;
}

尽管$file中有实际模型,但当我尝试访问$fileList->files[0]时,它将再次从数据库请求。

Ofc,我尝试进行如下分配: $this->files[] = new File(...) 但它不起作用,因为没有给出 setter 。即使我为此添加新的 setter ,我真的不知道要填写什么才能使其按预期工作。

对此有什么建议吗?

最佳答案

如果您的模型有关系文件,或者即使没有,您也可以调用 $activeRecord->populateRelation('files',$fileModels)

参见:http://www.yiiframework.com/doc-2.0/yii-db-baseactiverecord.html#populateRelation()-detail

就您而言:

public function addFile()
{
$file = new File([
'fileListId' => $this->id
]);

return $file;
}

也许会成为

public function addFile()
{
$files = [];
$files[] = $file = new File([
'fileListId' => $this->id
]);

$this->populateRelation('files',$files);

return $file;
}

关于php - Yii2 在运行时将模型添加到 hasMany 关系中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48182345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com