【问题标题】:Trying to get property of non-object in kartik expandrow in yii2试图在yii2的kartik expandrow中获取非对象的属性
【发布时间】:2016-06-08 01:22:08
【问题描述】:

我正在尝试使用 kartik expandrow。 在 PartySearch 模型的第一级查询中是-

$query = (new Query())->select(['district'])->from('districts');

在 ExpartiesSearch 模型的第二级查询中是 -

$query = (new Query())->select(['parties_district','parties_partyname'])->from('parties');

index.php中expandrow的代码是-

[
            //['class' => 'yii\grid\SerialColumn'],
            'class' => 'kartik\grid\ExpandRowColumn',
            'value' => function($model, $key, $index, $column){
                return GridView::ROW_COLLAPSED;
            },
            'detail' => function($model, $key, $index, $column){
                $searchModel = new ExpartiesSearch();
                $searchModel-> parties_district = $model-> district;
                $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

                return Yii::$app->controller->renderPartial('_exparties', [
                    'searchModel' => $searchModel,
                    'dataProvider' => $dataProvider,
                    ]);                   

                },
            ],

我遇到了错误 -

Trying to get property of non-object

突出显示的错误行是 -

$searchModel-> parties_district = $model-> district;

如果我将 PartySearch 模型中的查询更改为

,则相同的代码可以正常工作
$sql = 'select district from districts';
$query = Districts::findBySql($sql);

但是,我必须仅以特定格式(源自查询生成器)编写查询。请帮忙。

【问题讨论】:

    标签: yii2


    【解决方案1】:

    在我的测试中:

    $query = (new Query())->select(['district'])->from('districts');
    

    将返回您的数组数组。在这种情况下,您需要使用 $model['district']。

    [
    //['class' => 'yii\grid\SerialColumn'],
    'class' => 'kartik\grid\ExpandRowColumn',
    'value' => function ($model, $key, $index, $column) {
        return GridView::ROW_COLLAPSED;
    },
    'detail' => function ($model, $key, $index, $column) {
        $searchModel = new ExpartiesSearch();
        $searchModel->parties_district = $model['district'];
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    
        return Yii::$app->controller->renderPartial('_exparties', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    
    },
    

    尝试使用 xdebug 来查看 $model 中的确切内容

    【讨论】:

    • 你的意思是 - $query = (new Query())->select($model['district'])->from('districts'); ?
    • 我已经更新了答案。我的意思是这一行: $searchModel->parties_district = $model['district'];
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    相关资源
    最近更新 更多