Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php “Yii2”;“有很多”;关系只返回第一行_Php_Yii2 - Fatal编程技术网

Php “Yii2”;“有很多”;关系只返回第一行

Php “Yii2”;“有很多”;关系只返回第一行,php,yii2,Php,Yii2,模型Person与PersonType有很多关系: public function getPersonTypes() { return $this->hasMany(PersonType::className(), ['PersonID' => 'PersonID']); } 我需要在视图中显示所有PersonType的相关值 模范人物: public function ListPersonTypes() { $data = $thi

模型
Person
PersonType
有很多关系:

public function getPersonTypes()    
{
    return $this->hasMany(PersonType::className(), ['PersonID' => 'PersonID']);
}
我需要在视图中显示所有PersonType的相关值

模范人物:

public function ListPersonTypes()
{            
    $data = $this->getPersonTypes()->all();    
    $list = array();
    foreach ($data as $value) {
        $list[] = $value['PersonTypeName'];
        return implode(', ', $list);   
    }
}
但是,为什么
ListPersonTypes()
只返回表
PersonType
中的第一行

public function ListPersonTypes()
{

    $data=$this->getPersonTypes;

    $list=array();
    foreach ($data as $value){
        $list[]=$value['PersonTypeName'];
        return implode(',',$list);

    }
}
我们应该做到这一点


应该做到这一点。

在代码中,您只运行了一次迭代。。。当你在foreach中调用return时

public function ListPersonTypes()
{    
    $data = $this->getPersonTypes()->all();   
    $list = array();
    foreach ($data as $value) {
        $list[] = $value['PersonTypeName'];
    }
    return implode(', ', $list);
}

似乎在你的代码中你只运行了一次迭代。。。当你在foreach中调用return时

public function ListPersonTypes()
{    
    $data = $this->getPersonTypes()->all();   
    $list = array();
    foreach ($data as $value) {
        $list[] = $value['PersonTypeName'];
    }
    return implode(', ', $list);
}
  • 您没有正确使用它
    $this->getPersonTypes()->all()使用
    this
    $this->personTypes
  • 从循环中写出返回值
默认情况下,Yii2(gii)为您创建此函数,以访问model的属性并作为arrray返回

尚未创建此函数以作为函数文本访问

试试这个代码

public function ListPersonTypes()
    {
        // this go to function getPersonTypes and return a array of them
        $data=$this->personTypes;

        $list=array();
        foreach ($data as $value){
            $list[]=$value['PersonTypeName'];            
        }
      return implode(',',$list);
    }
  • 您没有正确使用它
    $this->getPersonTypes()->all()使用
    this
    $this->personTypes
  • 从循环中写出返回值
默认情况下,Yii2(gii)为您创建此函数,以访问model的属性并作为arrray返回

尚未创建此函数以作为函数文本访问

试试这个代码

public function ListPersonTypes()
    {
        // this go to function getPersonTypes and return a array of them
        $data=$this->personTypes;

        $list=array();
        foreach ($data as $value){
            $list[]=$value['PersonTypeName'];            
        }
      return implode(',',$list);
    }