php - ionic 2 : marge details with same values

标签 php mysql sql ionic-framework ionic2

我有从数据库响应中获得的对象数组。 每个对象都有类(class)名称、讲座名称、类(class)、时间、日期。 在我的数据库中,它是一对多的关系 -> 意味着每个讲座都有很多课,所以我有讲座表和时间表。

时间表有lecture_id的foreign_key,这意味着 讲座表:lecture_id(primary_key) +更多属性。 时间表:id_lecture(foreign_key),id_time(primary_key) +更多属性。 我做了一个查询

"SELECT * from lectures,Times where id_lecture=lecture_id";

它工作得很好,给了我我想要的结果。 问题是每个讲座都有一些类(class),我想在同一个 ionic 项目中显示这些类(class)并将其合并到一个对象。 换句话说,我想这样做。 enter image description here

这是我获取数据的代码

  this.coursesData.LoadLectures()
        .subscribe(LectureList=> {
           console.log("getLec1");
          LectureList.forEach(lecture=>{
            console.log(lecture);
          var newLecture={
                name:lecture.name,
                email:lecture.email,
                phone:lecture.phone ,
                lesson_type:lecture.lesson_type ,
                detailsHours:{'start_time':lecture.start_time,'end_time':lecture.end_time,'class':lecture.class, 'day':lecture.day},
                details:lecture.details,
                course_name:lecture.course_name
          }
            this.coursesA.push(newLecture);
            this.coursesNames.push(lecture.course_name);
            this.LecturesNames.push(lecture.name);
          });
          //this.courseSelect=this.coursesNames[0];
          this.coursesAD=this.coursesA;
          this.coursesNames = this.coursesNames.filter(function(elem, index, self) {
                  return index == self.indexOf(elem);
              })
             // console.log("co"+this.coursesA);


               this.loader.dismiss();
               //console.log(this.LecturesNames);
        // return this.coursesA;

        },err=>{
          console.log(err);
        });
  }

如您所见,新讲座包含

 var newLecture={
                name:lecture.name,
                email:lecture.email,
                phone:lecture.phone ,
                lesson_type:lecture.lesson_type ,
                detailsHours:{'start_time':lecture.start_time,'end_time':lecture.end_time,'class':lecture.class, 'day':lecture.day},
                details:lecture.details,
                course_name:lecture.course_name
          }

但有很多有一些教训,所以如果我这样做,就会出现问题,因为它会重复名称。

我尝试了这种方法,但它显示错误

 public Lectures(){
  console.log("getLec");
  this.courseSelect='';
  this.coursesNames=[];
  this.LecturesNames=[];
  this.coursesA=[];

 this.coursesData.LoadLectures()
    .subscribe(LectureList=> {
       console.log("getLec1");
      LectureList.forEach(lecture=>{
        console.log(lecture);
      var newLecture={
            id:lecture.id_lecture,
            name:lecture.name,
            email:lecture.email,
            phone:lecture.phone ,
            lesson_type:lecture.lesson_type ,
            detailsHours:{'start_time':lecture.start_time,'end_time':lecture.end_time,'class':lecture.class, 'day':lecture.day},
            details:lecture.details,
            course_name:lecture.course_name
      }
        console.log("de"+newLecture.detailsHours.start_time);
        if(!newLecture.id){
          this.coursesA[newLecture.id]=newLecture;
       // this.coursesNames.push(lecture.course_name);
        //this.LecturesNames.push(lecture.name);
        }
        else{
          this.coursesA[newLecture.id].push(newLecture);
        }

      });
      this.coursesAD=this.coursesA;

      //this.courseSelect=this.coursesNames[0];

      console.log(this.coursesA);
      /*this.coursesNames = this.coursesNames.filter(function(elem, index, self) {
              return index == self.indexOf(elem);
          })
           */

         // console.log("co"+this.coursesA);

           this.loader.dismiss();
           console.log("lets"+this.LecturesNames);
    // return this.coursesA;


    },err=>{
      console.log(err);
    });

}

我收到这个错误

TypeError: Cannot read property 'push' of undefined

有人有办法解决吗?

最佳答案

我认为您可以使用子数组按名称(或 course_name)对类(class)进行分组。您可以将 newLecture 推送到 courseA 内,而不是将其推送到 courseA[newLecture.name] 内。

因此,您将得到如下内容:

{
    "JAVA Course": [
      { lecture1 },
      { lecture2 }
    }],
    "JS Course": [
      { lecture3 },
      { lecture4 }
    }]
}

然后,在您的模板中您可以执行以下操作:

<ion-item ng-repeat="(key, value) in obj">
    <p>{{key}}</p> <!-- example: JAVA Course -->
    <div ng-repeat="(subkey, subvalue) in value">
        {{subvalue}} <!-- example: lecture hours -->
    </div>
</ion-item>

关于php - ionic 2 : marge details with same values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40532235/

相关文章:

php - 创建没有框架依赖性的 RestFul API?

php - 使用 Laravel 存储日期

php - MySQL 行数总是返回 false

php - 如何从 MySQL 数据库中检索图像并显示在 html 标签中

c# - SQL Server - 我想根据使用的标识符选择数据库

C# SQL 将数据库还原到默认数据位置

php - MySQL - 插入语句正确,但仍然出错

php - Laravel Eloquent 分页控制带路由的页码

php - 只逃避必要的东西,这可能吗?

mysql - SQL IN 语句 - 返回结果时保留重复项