YII2如何在连接后获取每条记录

YII2如何在连接后获取每条记录,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,如何在多次连接后获取活动记录中的每条记录 $model = \common\models\opcr\OpcrKra::find() ->joinWith('opcrRoObjectives') ->joinWith('opcrRoObjectives.opcrFdObjectives') ->joinWith('opcrRoObjectives.opcrFdObjectives.opcrIndividuals'); 我得到

如何在多次连接后获取活动记录中的每条记录

$model = \common\models\opcr\OpcrKra::find()
         ->joinWith('opcrRoObjectives')
         ->joinWith('opcrRoObjectives.opcrFdObjectives')
         ->joinWith('opcrRoObjectives.opcrFdObjectives.opcrIndividuals');
我得到一个
试图获取非对象属性的错误

foreach ($model->all() as $row) {
      echo "<tr>"
      . "<td></td>"
      . "<td>" . $row->kra . "</td>"
      . "<td>" . $row->opcrRoObjectives->id . "</td>" // error here
      . "</tr>";
      }
foreach($model->all()作为$row){
回声“”
. ""
.“.$row->kra”
.“”.$row->opcrRoObjectives->id.“//此处出错
. "";
}

我试图显示
$row->count()
,它给出了我期望的确切记录数

您只需尝试以下解决方案:

$model = \common\models\opcr\OpcrKra::find()
     ->joinWith('opcrRoObjectives')
     ->joinWith('opcrRoObjectives.opcrFdObjectives')
     ->joinWith('opcrRoObjectives.opcrFdObjectives.opcrIndividuals')
$result =  $model->asArray()->all();
那么在你看来,

foreach ($model as $row) {
  echo "<tr>"
  . "<td></td>"
  . "<td>" . $row->kra . "</td>"
  . "<td>" . $row['opcrRoObjectives']['id'] . "</td>"
  . "</tr>";
  }
foreach($model as$row){
回声“”
. ""
.“.$row->kra”
.“.$row['opcrrooobjectives']['id']”
. "";
}
我使用

$authors=Author::find()->with('posts')->all();//获取作者的帖子
foreach($authors作为$author的作者){
echo“Author:”.$Author->name.”;
回声“
    ”; foreach($author->posts as$post){//此处不执行任何查询 回声“
  • ”$post->title.“
  • ”; } 回声“
”; }
您确定每个OpcrKra记录都存在opcrRoObjectives吗?“joinWith'应用左连接。
    $authors = Author::find()->with('posts')->all();  // fetches the authors with their posts
    foreach($authors as $author) {
    echo "<h2>Author : " . $author->name . "</h2>";
    echo "<ul>";

    foreach($author->posts as $post) {  // no query executed here
        echo "<li>" . $post->title . "</li>";
    }
    echo "</ul>";
}