Kohana 2: ошибка базы данных там, где ее не должно быть - PullRequest
0 голосов
/ 10 октября 2011

У меня есть модель 'case' и 'document'.Они по отношению многие ко многим.В той же ситуации находятся «клиент» и «документ».Я использую кохану 2.x

У меня есть два метода.В контроллере «Случаи»:

public function documents($case_id) {
    $case = ORM::factory('case', $case_id);
    $documents = $case->documents;
    $this->template->view = View::factory('panel/documents/list')
        ->set('documents', $documents);
}

И в контроллере «клиенты»:

public function documents($customer_id) {
    $customer = ORM::factory('customer', $customer_id);
    $documents = $customer->documents;
    $this->template->view = View::factory('panel/documents/list')
        ->set('documents', $documents);
}

Когда я запускаю первый метод, все в порядке, но когда я запускаю второй метод, я получаюошибка:

Unknown column 'cases_documents.cas_id' in 'where clause' - SELECT `document_id` AS `id` FROM (`cases_documents`) WHERE `cases_documents`.`cas_id` = 1

Ошибка в 371 строке cms / system / library / drivers / Database / Mysql.php

Я не могу понять, почему Kohana вызывает sql-запрос с

cases_documents`.`cas_id` = 1

вместо

`cases_documents`.`case_id` = 1

Моя модель Case выглядит следующим образом:

class Case_Model extends ORM {

    protected $belongs_to = array('customer', 'user', 'liquidator' => 'user');
    protected $has_many = array('users');
    protected $has_and_belongs_to_many = array('documents');
    protected $table_name = 'cases';

    public $formo_ignores = array('id', 'user_id', 'closed');

    public $formo_defaults = array(
        'liquidator_id' => array(
            'type' => 'select'
        ),
        'type' => array(
            'type' => 'select'
        ),
        'policytype' => array(
            'type' => 'select'
        ),
        'reported' => array(
            'type' => 'select'
        ),
        'sufferer' => array(
            'type' => 'select'
        ),

    );
    }
}

Моя модель Customer выглядит следующим образом:

class Customer_Model extends ORM {

    protected $has_many = array('users');
    protected $has_and_belongs_to_many = array('documents', 'cases');
    protected $has_one = array('parent');
    public $formo_ignores = array('id', 'parent_id');

}

AndМодель документа:

class Document_Model extends ORM {

    protected $has_and_belongs_to_many = array('groups', 'cases', 'customers');

    public $formo_ignores = array('id', 'name');

}

Пожалуйста, помогите мне, что я делаю неправильно или что я должен сделать, чтобы этот код работал.

1 Ответ

0 голосов
/ 21 октября 2011

Я уже знаю, что не так.

Чтобы избежать этой ошибки, мне нужно было всего лишь изменить файл конфигурации инфлектора, добавив строку:

'case' => 'cases'

чтобы получить такой массив:

$config['irregular'] = array
(
    'child' => 'children',
    'clothes' => 'clothing',
    'man' => 'men',
    'movie' => 'movies',
    'person' => 'people',
    'woman' => 'women',
    'mouse' => 'mice',
    'goose' => 'geese',
    'ox' => 'oxen',
    'leaf' => 'leaves',
    'course' => 'courses',
    'size' => 'sizes',
    'case' => 'cases'
);

Надеюсь, это поможет кому-то с такой же проблемой.

...