Как добавить новое свойство в model yii framework?

#php #yii

#php #yii

Вопрос:

Я добавил новый столбец в свою таблицу ‘delivery_state’

И для его использования в yii framework.

я добавил это ‘delivery_state’ в модель, подобную этой, в следующей функции

 public function rules()
    {
        // NOTE: you should only define rules for those attributes that
        // will receive user inputs.
        return array(
            array('buyer_id, seller_id, lta_product_id, currency_id, order_date, delivery_date, payment_date', 'required'),
            array('seller_id, currency_id', 'numerical', 'integerOnly'=>true),
            array('buyer_id, lta_product_id, quantity', 'length', 'max'=>11),
            array('unitary_price, total_price', 'length', 'max'=>10),
            array('delivery_title, delivery_address,delivery_state, delivery_city, delivery_country_id', 'length', 'max'=>255),
            array('delivery_zip', 'length', 'max'=>16),
            array('phone_number', 'length', 'max'=>24),
            array('notes', 'length', 'max'=>1024),
            array('status', 'length', 'max'=>1),
            // The following rule is used by search().
            // Please remove those attributes that should not be searched.
            array('id, buyer_id, seller_id, lta_product_id, quantity, unitary_price, total_price, currency_id, order_date, delivery_date, payment_date, delivery_title, delivery_address,delivery_city, delivery_zip, delivery_country_id, phone_number, notes, status', 'safe', 'on'=>'search'),
        );
    }
public function attributeLabels()
    {
        return array(
            'id' => 'Id',
            'buyer_id' => 'Buyer',
            'seller_id' => 'Seller',
            'lta_product_id' => 'Lta Product',
            'lta_contract_id' => 'Lta Contract',
            'quantity' => 'Quantity',
            'unitary_price' => 'Unitary Price',
            'total_price' => 'Total Price',
            'currency_id' => 'Currency',
            'order_date' => 'Order Date',
            'delivery_date' => 'Delivery Date',
            'payment_date' => 'Payment Date',
            'delivery_title' => 'Delivery Title',
            'delivery_address' => 'Delivery Address',
            'delivery_state' => 'Delivery State',
            'delivery_city' => 'Delivery City',
            'delivery_zip' => 'Delivery Zip',
            'delivery_country_id' => 'Delivery Country',
            'phone_number' => 'Phone Number',
            'notes' => 'Notes',
            'status' => 'Status',
            'buyer_quota' => 'Buyer Quota',
            'seller_quota' => 'Seller Quota',
        );
    }
  

Я добавил это ‘delivery_state’ как в правила функции, так и в атрибуты, но я получил сообщение об ошибке свойство delivery_state не определено.

Не могли бы вы, ребята, пожалуйста, подсказать мне, где я ошибаюсь….

Или что-нибудь, чего мне не хватает для определения..

Спасибо

Ответ №1:

Вы должны изменить свою базу данных, чтобы включить столбец delivery_state. Однако, если вы не собираетесь сохранять информацию в db, вы можете просто определить ее как свойство вашего модуля

 <?php

class Delivery extends CActiveRecord
{
    public $delivery_state;
    /**
     * @return string the associated database table name
     */
    public function tableName()
    {
        return 'table-name';
    }


}
  

Ответ №2:

Проверьте наличие ‘schemaCachingDuration’ в main.php файле. Если это не ‘0’, то попробуйте сделать это ‘0’. В моем случае это сработало.

А также добавьте массив правил ‘delivery_state’ для ‘safe’. Это не связано с ошибкой, но это помогает вам получить все атрибуты при отправке формы.

Комментарии:

1. schemaCachingDuration не найден в main.php файл