我想显示Shift的名称而不是shift_id
我有一个来自其他表的dropboxlist,就像这样
<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'); ?>
我有两张桌子 日:id_day,mon,tues,wed等等
Shift:shft_id,start,end,name,status
这是当天的关系
'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点
etc.etc。
我不知道它是什么命令。我不知道。请帮帮我
答案 0 :(得分:2)
而不是User :: getusername()方法。
我认为你可以在一行中使用它。
// format models resulting using listData
<?php echo $form->dropdownlist($model,'user_id', CHtml::listData(User::model()->findAll(),'id', 'name')); ?>
答案 1 :(得分: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;
}
答案 2 :(得分:0)
我正在努力了解你真正在问什么。我相信你说你已经能够从下拉列表中正确填充你的记录了。但是在显示时,视图只显示shift_id值?当天的关系应该能够得到您的班次名称。你是如何显示列表的:
mon: 5
tue: 5
wed: 6
我正在尝试了解您是否需要帮助正确显示下拉项目,或者如何在数据库中设置值后显示班次名称。此外,你的'Day'表让我感到困惑。字段名称是什么?他们是'day_id'还是'day'?或者你实际上是在每周的每一天之后命名字段吗?
如果您通过foreach
显示数据并且每天(假设它是$day
)对象,那么与'shift'的关系可以给出如下名称:{ {1}}如果名称显示为“#am-#pm”。否则你可以这样显示:
echo $day->shift->name;
答案 3 :(得分: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'),
);
}
问题在于我的关系。它未正确设置,因此您需要正确设置然后转到日期/视图
<?php $this->widget('bootstrap.widgets.TbDetailView',array(
'data'=>$model,
'attributes'=>array(
'id_day',
array(
'name'=>'mon',
'value'=>CHtml::encode($model->monday->name)
),
这是输出
答案 4 :(得分:0)
如果您有详细信息,请使用以下代码:
widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'id',
'name',
array(
'label' => $model->shift->getAttributeLabel('shift_name'),
'value' => $model->shift->shift_name
),)); ?>
答案 5 :(得分: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
),)); ?>