Страница 1 из 1
Relational
Добавлено: 2014.11.24, 02:00
Протеин
Подскажите пжл как связь сделать в доке
http://www.yiiframework.com/doc-2.0/gui ... ecord.html нашел вроде но что мне из этого надо я не пойму.
У меня есть 2 модели Order и Category(id,name) в Order(id,сategory_id ) , нужно при добавлении записи в Order вместо сategory_id вывести dropDownList этих name.
Насколько я понял в модели Category надо добавить
Код: Выделить всё
public function getCategory()
{
return $this->hasMany(Category::className(), ['id' => 'сategory_id'])
->via('name');
}
если так то что дальше делать как теперь это в _form.php
Код: Выделить всё
<?= $form->field($model, 'сategory_id')->dropDownList( ???
и в GridView::widget как заменить сategory_id на name ?
Re: Relational
Добавлено: 2014.11.24, 09:03
asset
генерацию модела делай через gii связами так будет понятливее тебе,пока. Где обратный связь?
как обычно $order->category->name
дропдаун так
http://stackoverflow.com/questions/2156 ... st-in-yii2
Re: Relational
Добавлено: 2014.11.24, 14:34
Протеин
дропдаун заработал а вот как в
Код: Выделить всё
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'type_service_id',
status_id
['class' => 'yii\grid\ActionColumn'],
],
]);
?>
заменить type_service_id на name? и как вместо статус ид ( там будет 0,1,2) вывести такое "<span class="label label-info">Info</span>" если 1 а если 2 то другой span
Re: Relational
Добавлено: 2014.11.24, 15:20
VaNnOrus
Если вы про нормальное имя в лэйбле для поля формы, то в моделе
Код: Выделить всё
public function attributeLabels()
{
return [
'type_service_id' => 'Field name',
]
}
Re: Relational
Добавлено: 2014.11.24, 15:58
asset
Протеин писал(а):
заменить type_service_id на name? и как вместо статус ид ( там будет 0,1,2) вывести такое "<span class="label label-info">Info</span>" если 1 а если 2 то другой span
типа как тут
https://github.com/vova07/yii2-start-bl ... ex.php#L50
Re: Relational
Добавлено: 2014.11.24, 20:28
Протеин
Re: Relational
Добавлено: 2014.11.24, 20:35
Протеин
VaNnOrus писал(а):Если вы про нормальное имя в лэйбле для поля формы, то в моделе
Код: Выделить всё
public function attributeLabels()
{
return [
'type_service_id' => 'Field name',
]
}
Нет я про то чтобы вместо цифры
вывести то что стоит под индексом 7 в таблице service(id,name)
Re: Relational
Добавлено: 2014.11.24, 20:52
RyanTedder
Код: Выделить всё
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
[
'attribute' => 'type_service_id',
'value' => function ($model) {
if ($model->status == \backend\models\YiiManager::STATUS_INACTIVE)
return "Деактивирован";
if ($model->status == \backend\models\YiiManager::STATUS_ACTIVE)
return "Активирован";
},
],
['class' => 'yii\grid\ActionColumn'],
],
]);
Думаю суть понял)
Re: Relational
Добавлено: 2014.11.24, 20:58
Протеин
RyanTedder писал(а):Код: Выделить всё
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
[
'attribute' => 'type_service_id',
'value' => function ($model) {
if ($model->status == \backend\models\YiiManager::STATUS_INACTIVE)
return "Деактивирован";
if ($model->status == \backend\models\YiiManager::STATUS_ACTIVE)
return "Активирован";
},
],
['class' => 'yii\grid\ActionColumn'],
],
]);
Думаю суть понял)
хахахах
а если у меня тех id больше 100 будет? в yii1 это делалось так
Код: Выделить всё
/**
* @return array relational rules.
*/
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(
'services' => array(self::HAS_MANY, 'order', 'type_service_id'),
);
}
а в yii 2 как такое сделать ?
Re: Relational
Добавлено: 2014.11.25, 00:04
zelenin
'relation_name.attribute_name' - это название колонки в гриде
Re: Relational
Добавлено: 2014.11.25, 00:32
Протеин
zelenin писал(а):'relation_name.attribute_name' - это название колонки в гриде
Код: Выделить всё
Unknown Property
Возникла внутренняя ошибка сервера.
exception 'yii\base\UnknownPropertyException' with message 'Getting unknown property: frontend\models\Order::services' in
Re: Relational
Добавлено: 2014.11.25, 00:35
zelenin
Протеин писал(а):zelenin писал(а):'relation_name.attribute_name' - это название колонки в гриде
Код: Выделить всё
Unknown Property
Возникла внутренняя ошибка сервера.
exception 'yii\base\UnknownPropertyException' with message 'Getting unknown property: frontend\models\Order::services' in
как объявлена связь в Order?
Re: Relational
Добавлено: 2014.11.25, 00:40
Протеин
zelenin писал(а):Протеин писал(а):zelenin писал(а):'relation_name.attribute_name' - это название колонки в гриде
Код: Выделить всё
Unknown Property
Возникла внутренняя ошибка сервера.
exception 'yii\base\UnknownPropertyException' with message 'Getting unknown property: frontend\models\Order::services' in
как объявлена связь в Order?
Ну вот в чем и был заключен мой вопрос я спрашивал как ее задать.. в доках я не нашел или не в ту сторону смотрел
Re: Relational
Добавлено: 2014.11.25, 00:46
zelenin
Re: Relational
Добавлено: 2014.11.25, 00:55
Протеин
Код: Выделить всё
public function getTypeService()
{
return $this->hasOne(Service::className(), ['id' => 'type_service_id']);
}
Re: Relational
Добавлено: 2014.11.25, 00:56
zelenin
Протеин писал(а):
Код: Выделить всё
public function getTypeService()
{
return $this->hasOne(Service::className(), ['id' => 'type_service_id']);
}
теперь 'typeService.name' или что у вас там за атрибут..
Re: Relational
Добавлено: 2014.11.25, 01:02
Протеин
zelenin писал(а):Протеин писал(а):
Код: Выделить всё
public function getTypeService()
{
return $this->hasOne(Service::className(), ['id' => 'type_service_id']);
}
теперь 'typeService.name' или что у вас там за атрибут..
а тю а я пишу "typeService.type_service_id'
СПАСИБО!