我在活动的任务模型中创建了关系
public funtion getActivitiesSum()
{
return $this->hasMany(Activities::className(),['task_id'=>'id'])->sum('amount');
}
我得到了正确的金额,计算结果还可以。查询也没问题,当在foreach循环中测试打印总和时,它打印正确的金额。
$tasks = Task::find()->where(['project_id'=>$id])->all();
在视图文件中,我在任务变量上使用javascript函数。我试图传递Json :: encode,但无法读取关系自定义属性 activitiesSum 。当我试图打印时,返回原点。
return $this->render('view',[
'tasks' => Json::encode($tasks)
]);
此外,我试图返回没有编码,但无法在javascript中读取varibale。 数组到字符串转换错误
如何解决这个问题?
答案 0 :(得分:1)
据我所知,你不能。您必须遍历$tasks
数组并在每个元素中调用getActivitiesSum()
。 find()
不能包含你的函数,因为它不是关系,你也不能从js调用PHP的对象方法。
我会创建一个单独的数组,由任务id
索引,并包含每项任务的活动量:
$tasks = Task::find()->where(['project_id'=>$id])->all();
$activities_count = [];
foreach ($tasks as $task) {
$activites_count[$task->id] = $task->getActivitiesSum();
}
现在,您使用$tasks
和$activities_count
呈现视图。