Kohana 3 - Сохранить модель в БД с отношением - PullRequest
0 голосов
/ 29 ноября 2018

У меня простая проблема, но я нигде не могу найти ответ - ни в документации, ни на этом форуме.

Короче говоря - у меня есть 2 модели в Kohana 3 - Task и TaskType.Я хотел бы создать модель задач таким образом, чтобы я мог затем обратиться к полю $ task-> task_type_id-> name.

К сожалению, когда вы вставляете запись в базу данных, я получаю ответ: «Общая ошибка: 1364 Поле 'task_type_id' не имеет значения по умолчанию"

Когда я добавляю поле task_type_id как обычное поле (в $ _table_columns), я не могу ссылаться на объект TaskType впросмотр через $ task-> task_type_id-> name.

Я не знаю, как настроить модель для сохранения отношения к базе данных и возможности ссылаться на нее в представлении.

Пожалуйста, помогите.

Код моей модели:

class Model_Task extends ORM
{
    protected $_table_name  = 'task';

    protected $_table_columns = array(
        'id'=>array('data_type'=>'int','is_nullable'=>false),
        'date' => array('data_type'=>'date','is_nullable'=>
        'description'=>array('data_type'=>'varchar','is_nullable'=>true)
    );

    protected $_belongs_to = array(
        'task_type_id' => array(
            'model'       => 'TaskType',
            'foreign_key' => 'id'
        )
    );
}

class Model_TaskType extends ORM
{
    protected $_table_name  = 'task_type';

    protected $_table_columns = array(
        'id'=>array('data_type'=>'int','is_nullable'=>false),
        'name' => array('data_type'=>'string','is_nullable'=>false)
    );
}

1 Ответ

0 голосов
/ 28 февраля 2019

Вероятно, это должно быть:

class Model_Task extends ORM
{
    protected $_table_name  = 'task';

    protected $_table_columns = array(
        'id'=>array('data_type'=>'int','is_nullable'=>false),
        'date' => array('data_type'=>'date','is_nullable'=>
        'description'=>array('data_type'=>'varchar','is_nullable'=>true),
        'task_type_id' => array('data_type'=>'int','is_nullable'=>false),
    );

    protected $_belongs_to = array(
        'task_type' => array(
            'model'       => 'TaskType',
            'foreign_key' => 'id'
        )
    );
}

class Model_TaskType extends ORM
{
    protected $_table_name  = 'task_type';

    protected $_table_columns = array(
        'id'=>array('data_type'=>'int','is_nullable'=>false),
        'name' => array('data_type'=>'string','is_nullable'=>false)
    );
}

и добавление к $task->add('task_type', $task_type);

...