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

时间:2018-04-07 09:26:04

标签: php yii2

模型PersonPersonType有很多关系:

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的第一行?

3 个答案:

答案 0 :(得分:1)

public function ListPersonTypes()
{

    $data=$this->getPersonTypes;

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

    }
}

应该做的伎俩。

答案 1 :(得分:1)

  • 您没有正确使用$this->getPersonTypes()->all();使用它 这个$this->personTypes
  • 写出退出循环

Yii2(gii)默认情况下创建此函数,以便像模型的属性一样访问并返回为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);
    }

答案 2 :(得分:0)

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

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