如何在javascript中阅读php对象关系(自定义属性)

时间:2017-04-04 10:58:32

标签: javascript php activerecord yii2

我在活动的任务模型中创建了关系

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。 数组到字符串转换错误

如何解决这个问题?

1 个答案:

答案 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呈现视图。