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

标签 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();

在 View 文件中,我在任务变量上使用 JavaScript 函数。我尝试使用 Json::encode 传递,但无法读取关系自定义属性 activitiesSum 。当我尝试打印时返回未定义。

return $this->render('view',[
    'tasks' => Json::encode($tasks)
]);

我也尝试在不编码的情况下返回,但无法读取 JavaScript 中的变量。 数组到字符串转换错误

如何解决这个问题?

最佳答案

据我所知,你不能。您必须循环遍历 $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 渲染 View 。

关于javascript - 如何在javascript中读取php对象关系(自定义属性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43205283/

相关文章:

ruby-on-rails - rails 3 : can't call an ActiveRecord query with the #send method (NoMethodError)

javascript - 在日期选择器中将今天设置为该月的开始日

ruby-on-rails - 如何在 Rails 查询中缓存数据库产生的列表

mysql - 按具有 has_many 关联的连接表列分组

php - 443端口无缘无故附加到主机名

php - 除了设置内存限制指令之外,如何解决 Yii 框架或 PHP 中的内存泄漏问题?

php - 弃用的 MySql 函数

javascript - JS : I have a function that activates twice instead of once?

javascript - 我希望通过在脚本中添加 Cookie 代码进行浏览器刷新时不更改当前设置?

javascript - 使用 jQuery 更改父元素样式