我正在开发公司集团董事总经理的系统。我需要filter
名已分配公司的董事。我从controller
传递数据进行查看后,在选择公司时,过滤器显示的结果不正确。
当我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;
}
有人可以告诉我我在这里犯了什么错误吗?还是有什么方法可以实现我的期望?
答案 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;
}