如何在Yii2 GridView中显示有很多关系记录?

时间:2018-07-21 09:06:32

标签: join gridview yii2

我是yii2的新手。我有三张桌子吗? s(id,firstName,lastName)p(id,name)sp(sid,pid,qty)。 s模型中有所有关系(由gii创建)。 我想通过活动记录在gridview中显示关注查询:

select s.firstName,s.lastName, sp.qty from s join sp on s.s#=sp.s#

,它返回以下结果:

  

firstname1 lastname1 qty1

     

firstname1 lastname1 qty2

     

firstname2 lastname2 qty3

由于这个原因,我写了以下代码。

代码:

class SController extends Controller
{
    public function actionIndex()
    {


        $dataProvider = new ActiveDataProvider([
            'query' =>s::find(),

        ]);

        return $this->render('index', [
            'dataProvider' => $dataProvider,
        ]);
    }
}

并在索引视图中:

<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
    ['class' => 'yii\grid\SerialColumn'],


    'firstName',
    'lastName',

   [

            'attribute' => 'quantity',
            'value' => function ($data) {

                if ($data->sps) {

                    return implode(\yii\helpers\ArrayHelper::map($data->sps, 'id','qty'));
                }

            },
        ],

    ['class' => 'yii\grid\ActionColumn'],
],

]);

但它返回跟随结果:

  

firstname1 lastname1 qty1qty2

     

firstname2 lastname2 qty3

我不知道是什么问题?

0 个答案:

没有答案