-2

我想显示 Shift 的名称而不是 shift_id

我有一个来自其他表的保管箱列表,就像这样

<div>
<?php echo $form->labelEx($model,'mon'); ?>
<?php echo $form->dropDownList($model, 'mon', CHtml::listData(
        Shift::model()->findAll(), 'shft_id', 'name'),
    array('prompt' => 'Select a Department')
); ?>
<?php echo $form->error($model,'mon'); ?>

我有两张表是 Day:id_day、mon、tues、wed 等

班次:shft_id,开始,结束,名称,状态

这是当天的关系

'shift'=>array(self::HAS_MANY,'Shift','shft_id'),

对于班次:

'day'=>array(self::BELONGS_TO,'Day','id_day'),

它已经在工作了。Dropbox 中的选项是 Shift 的名称,并将 shft_id 放在 mon、tues、wed 等中。从表格的角度来看,它看起来像

id_user:3

周一:5

周二:5

周三:6

我想成为的就是在视图中。

id_user:3

周一:早上 6 点至下午 5 点

周二:上午 7 点至下午 6 点

等等等等

我不知道它是什么命令。我不知道。请帮帮我

4

6 回答 6

2

而不是 User::getusername() 方法。

我认为您可以简单地在一行中使用它。

 // format models resulting using listData     
<?php echo $form->dropdownlist($model,'user_id', CHtml::listData(User::model()->findAll(),'id', 'name')); ?>
于 2013-08-15T16:19:21.313 回答
1

下面是一个我认为可以解决你的问题的例子

_form.php中

<?php echo $form->dropdownlist($model,'user_id', User::getusername()); ?>
<?php echo $form->error($model,'user_id'); ?></th>

用户模型中

public function getusername()
{
   $criteria2=new CDbCriteria;
   $criteria2->select='*';
   $quser=User::model()->findAll($criteria2);
   foreach($quser as $r) 
   {    
      $user_id= $r->user_id;
      $user_name=$r->user_name;

      $user_array[$user_id]=$user_name;
   }
   return $user_array;
}
于 2013-08-15T08:37:11.193 回答
0

我试图理解你真正在问什么。我相信您是说您已经能够从下拉列表中正确填充您的记录。但是当你显示时,视图只显示 shift_id 值?当天的关系应该能够获得您的班次名称。你如何显示列表:

mon: 5
tue: 5
wed: 6

我试图了解您是否需要帮助正确显示下拉项目,或者如何在数据库中设置值后显示班次名称。另外,你的“日”表让我很困惑。字段名称是什么?他们是“day_id”和“day”吗?或者您实际上是在一周中的每一天之后命名这些字段吗?

如果您通过 a 显示数据foreach并且每天都在获取(假设它是$day)对象,那么与“shift”的关系可以为您提供如下名称:echo $day->shift->name;如果名称显示为“#am-#pm”。否则,您可以像这样显示它:

echo sprintf('%d a.m. - %d p.m.',$day->shift->start,$day->shift->end);

于 2013-08-16T07:09:24.800 回答
0

感谢帮助过我的人。它确实让我找到了答案,任何在这里遇到同样问题的人都是我所做的。

在我的模型/天

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
       'monday'=>array(self::BELONGS_TO,'Shift','mon'),
       'tuesday'=>array(self::BELONGS_TO,'Shift','tue'),
       'wednesday'=>array(self::BELONGS_TO,'Shift','wed'),
       'thursday'=>array(self::BELONGS_TO,'Shift','thurs'),
       'friday'=>array(self::BELONGS_TO,'Shift','fri'),
       'saturday'=>array(self::BELONGS_TO,'Shift','sat'),
       'sunday'=>array(self::BELONGS_TO,'Shift','sun'),



    );
}

在我的模型/Shift

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(


        'day_mon' =>array(self::HAS_MANY,'Day','mon'),
        'day_tue' =>array(self::HAS_MANY,'Day','tue'),
        'day_wed' =>array(self::HAS_MANY,'Day','wed'),
        'day_thurs'=> array(self::HAS_MANY,'Day','thurs'),
        'day_fri'=>array(self::HAS_MANY,'Day','fri'),
        'day_sat'=>array(self::HAS_MANY,'Day','sat'),
        'day_sun'=>array(self::HAS_MANY,'Day','sun'),
    );
}

问题出在我的关系上。它没有正确设置,所以你需要正确设置它然后去 Day/view

<?php $this->widget('bootstrap.widgets.TbDetailView',array(
'data'=>$model,
'attributes'=>array(
    'id_day',
    array(
        'name'=>'mon',
        'value'=>CHtml::encode($model->monday->name)
    ),

这是输出

在此处输入图像描述

于 2013-08-16T08:37:54.853 回答
0

如果您有详细信息,请使用以下代码:

widget('zii.widgets.CDetailView', array( 'data'=>$model, 'attributes'=>array( 'id', 'name', array( 'label' => $model->shift->getAttributeLabel('shift_name'), 'value' => $model->shift->shift_name ),)); ?>

于 2013-12-23T06:32:31.973 回答
0

如果其他人会在我的船上,您需要做的是在 view/modelname/view.php 中编辑 view.php

widget('zii.widgets.CDetailView', array( 'data'=>$model, 'attributes'=>array( 'id', 'name', 'country_id')); ?>

进入

widget('zii.widgets.CDetailView', array( 'data'=>$model, 'attributes'=>array( 'id', 'name', array( 'label' => $model->country->getAttributeLabel('country'), 'value' => $model->country->name ),)); ?>

于 2013-12-31T07:52:19.673 回答