Вопросы
Добавлено: 2015.01.06, 15:46
1. В Yii 2 нет валидации и сохранения связанных моделей из коробки?
2. Пропал CForm. Есть ли альтернатива?
3. Есть 2 связанные модели. Создаем два новых объекта, связываем через link. Link в доках обещает сохранить модель, которую привязываем, чтобы зафиксировать связь. Ок. Сохраняем модели, но выясняется, что поле, используемое в качестве внешнего ключа, не заполнено. Ладно, справедливо, ведь link сохраняет привязываемую модель, а внешний ключ хранится в основной. Тогда меняю местами модели, линкую и сохраняю по обратной связи. Тот же результат:
Где логика? Что же мне сохранять, потом линковать, потом опять сохранять модели? Объясните.
2. Пропал CForm. Есть ли альтернатива?
3. Есть 2 связанные модели. Создаем два новых объекта, связываем через link. Link в доках обещает сохранить модель, которую привязываем, чтобы зафиксировать связь. Ок. Сохраняем модели, но выясняется, что поле, используемое в качестве внешнего ключа, не заполнено. Ладно, справедливо, ведь link сохраняет привязываемую модель, а внешний ключ хранится в основной. Тогда меняю местами модели, линкую и сохраняю по обратной связи. Тот же результат:
Код: Выделить всё
Unable to link models: the primary key of app\models\Item is null.
Код: Выделить всё
public function actionCreate()
{
$item = new Item();
$seo = new Seo();
if ($item->load(Yii::$app->request->post()) &&
$seo->load(Yii::$app->request->post()) &&
$item->validate() &&
$seo->validate())
{
$seo->link('item', $item);
$seo->item->save(false);
return $this->redirect(['view', 'id' => $item->id]);
}
......
class Item extends \yii\db\ActiveRecord
{
public function getSeo()
{
return $this->hasOne(Seo::className(), ['item_id' => 'id']);
}
......
class Seo extends \yii\db\ActiveRecord
{
public function getItem()
{
return $this->hasOne(Item::className(), ['id' => 'item_id']);
}
......