数据既作为对象又作为数组传递?

时间:2019-08-29 08:40:29

标签: javascript php jquery laravel vue.js

我正在开发公司集团董事总经理的系统。我需要filter名已分配公司的董事。我从controller传递数据进行查看后,在选择公司时,过滤器显示的结果不正确。

enter image description here

当我console.log(this.directorships)时,将显示以上结果。我认为这是因为对于单个数据,它将显示为array。但是,如果这些倍数显示为objects

我要按如下所示循环for循环中的内容以打印结果。

for (let i = 0; i < this.directorships.length; i++) {
     single_director = this.directorships[i].director_profile;

     finalArray.push(single_director);
}

MyController.php

public function activeBoard($company_id){
        $directorship =  Directorship::with(['director_profile'])
            ->where('master_data_id',$company_id)
            ->get();

        $active_directors = $directorship->where('active',1);

        return $active_directors;

    }

有人可以告诉我我在这里犯了什么错误吗?还是有什么方法可以实现我的期望?

2 个答案:

答案 0 :(得分:3)

很难从屏幕截图中看出来,但是JavaScript中的Objects不能使用标准的for循环进行迭代,并且默认情况下没有length属性。您应该首先检查directorships是否为数组,然后适当地迭代或读取。例如:

let directorships_is_array = Array.isArray(directorships);

if(directorships_is_array) {
  // ... loop through array
}
else {
  // ... perform other function on object
}

有很多方法可以遍历对象并获取对象的长度。新的for in循环可以遍历对象。例如:

for(let director in directorships) {
  console.log(director);
}

您还可以使用Object之类的方法来获取let directors_length = Object.keys(directorships).length的长度,然后执行以下操作:

let number_of_directorships = Object.keys(directorships).length;

for(let i=0; i<number_of_directorships; i++) {
  // ... iterate here
}

答案 1 :(得分:0)

您需要使用这样的查询,您必须在条件之前进行初始化查询

public function activeBoard($company_id){
        $directorship =  Directorship::where('master_data_id',$company_id)->where('active',1)->with('director_profile')->get();


return $directorship;

    }