2015-07-02 2 views
2

Я новичок в yii. Я пробовал себя, googled и обнаружил, что генератор CRY по умолчанию yii2 по умолчанию не генерирует CRUD для таблиц, которые имеют много разных отношений. Также было обнаружено, что yii достигает (не в смысле Gii) многих для многих через одного для многих yiiDrills.yii2 - CRUD для многих-многих отношений

Теперь я пытаюсь эмулировать такой же тип CRUD по умолчанию вручную с помощью Github issue trail и stackoverflow trail. При этом я сталкиваюсь с нижеследующими проблемами.

Выпуск-1 (модель класса таблицы с многие ко многим отношений): Не смог инициализировать класс ActiveDataProvider,

$query = TableA::find(); 
    $dataProvider = new ActiveDataProvider([ 
     'query' => $query->TableB(), 
    ]); 

Issue-2 (View): Даже если бы я смог инициализировать как сделать это с помощью GridView

<?= GridView::widget([ 
    'dataProvider' => $dataProvider, 
    'filterModel' => $searchModel, 
    'columns' => [ 
     ['class' => 'yii\grid\SerialColumn'], 
    //How to give the column names like we give for one to many 
    /* Example */ 
     'TableA.attr1', 
     ['class' => 'yii\grid\ActionColumn'], 
    ], 
]); ?> 

Кроме того, я хотел бы знать, если это желательно создать класс модели для таблицы с многим ко многим отношений для обработки CRUD.

Thanks

ответ

-1

Вы должны создать модели для всех таблиц.

Пример отношения

/** 
* @return \yii\db\ActiveQuery 
*/ 
public function getCountry() 
{ 
    return $this->hasOne(Country::className(), ['id' => 'country_id']); 
} 

/** 
* @return \yii\db\ActiveQuery 
*/ 
public function getCity() 
{ 
    return $this->hasOne(City::className(), ['id' => 'city_id']); 
} 

Пример "Поиск" метод

$query = Tour::find(); 
// Important: lets join the query with our previously mentioned relations 
// I do not make any other configuration like aliases or whatever, feel free 
// to investigate that your self 
$query->joinWith(['city', 'country']); 

$dataProvider = new ActiveDataProvider([ 
    'query' => $query, 
]); 

Вы можете заменить hasOne с hasMany в вашем случае.

Пожалуйста, проверьте ссылку http://www.yiiframework.com/wiki/653/displaying-sorting-and-filtering-model-relations-on-a-gridview/

+0

Благодарим за отзыв. Это работает для меня отлично (ссылка была очень полезна), но у меня есть одно сомнение в соглашении об именах имени таблицы, указанном в joinWith(). Теперь он работает так, если фактическое имя таблицы является «table_abc», тогда yii-отладчик запрашивает имя как «tableAbc», почему это так? –

+0

set tablePrefix в вашем файле конфигурации. Это решит вашу проблему –

Смежные вопросы