duanjuduo4573 2018-07-20 07:41
浏览 78
已采纳

Yii2 ArrayHelper :: map左连接选择

I have users, orders and plans. When client buy plan, data is save in orders , plans are in account_plan and the information for user is in table users. In table orders is when the plan start and when it is expired. I use for Select2 ArrayHelper, but do not show the column here is a query

 $masAcc[0] = Yii::t('app', 'Choose plan');
 $masAcc['----------------'] = 
ArrayHelper::map(
\backend\models\Orders::find()
->select('orders.*,account_planLang.name as name')
->leftJoin('orders_props','`orders_props`.`order_id`= `orders`.`id`')
->leftJoin('account_plan','`orders_props`.`product_id`=`account_plan`.`id`')
->leftJoin('account_planLang','account_plan.id=account_planLang.plan_id')
->where('`orders`.`dt_end`<CURDATE() + INTERVAL 5 DAY AND `orders`.`dt_end`<CURDATE()')
->all(), 'id', 'name');

but the error is : Getting unknown property: backend\models\Orders::name here is Select2:

 $form->field($model, 'account')->widget(Select2::classname(), [
                        'model' => $model,
                        'theme' => 'bootstrap',
                        'options' => [
                            'placeholder' => Yii::t('app', 'app.choose'),
                            'class' => 'form-control select2'
                        ],
                        'data' => $masAcc,
                        'pluginOptions' => [
                            'allowClear' => true,
                        ],
                    ]);
                    }
  • 写回答

2条回答 默认 最新

  • doujilou3903 2018-07-21 06:49
    关注

    I guess there is no need to use ArrayHepler::map(). Try this way:

    Orders::find()
      ->select('account_planLang.name as name, table_name.id as id')
      ->leftJoin('orders_props','`orders_props`.`order_id`= `orders`.`id`')
      ->leftJoin('account_plan','`orders_props`.`product_id`=`account_plan`.`id`')
      ->leftJoin('account_planLang','account_plan.id=account_planLang.plan_id')
      ->where('`orders`.`dt_end`<CURDATE() + INTERVAL 5 DAY AND `orders`.`dt_end`<CURDATE()')
      ->indexBy('id')
      ->column();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥15 DruidDataSource一直closing
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签)
  • ¥50 sft下载大文阻塞卡死
  • ¥15 机器人轨迹规划相关问题