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条)

报告相同问题?

悬赏问题

  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 spring后端vue前端
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题