• ORM в Kohana 3.1?

    Oreolek
    @Oreolek Автор вопроса
    Поправка: save() есть, но офиц. дока намекает на то, что уже в 3.2 его может не остаться.
    Вот что получилось, если интересно:

    $starting_day = new Model_Day(Request::current()->post('starting_day'));
    if ($starting_day->day == '0000-00-00') $starting_day -> create(); else $starting_day -> update();
    $ending_day = new Model_Day(Request::current()->post('ending_day'));
    if ($ending_day->day == '0000-00-00') $ending_day -> create(); else $ending_day -> update();
    $opened_until = new Model_Day(Request::current()->post('opened_until'));
    if (Request::current()->post('opened_until') == '') $opened_until = new Model_Day(date("Y-m-d", strtotime(Request::current()->post('starting_day'))-10080));
    $opened_until -> save();
    $event->starting_day = $starting_day;
    $event->ending_day = $ending_day;
    $event->opened_until = $opened_until;
    $event->create();

    Что интересно: если для $opened_until тоже ввести проверку на существование, то он выдаёт либо cannot update: model not loaded, либо DUPLICATE PRIMARY KEY (т.е. 0000-00-00, такой ключ остался от предыдущих прогонов). Пока save() работает, попробую так.

    Спасибо!
  • ORM в Kohana 3.1?

    Oreolek
    @Oreolek Автор вопроса
    Пока что проблема в другом — как убедиться, что запись в таблице day существует? У меня здесь тоже была ошибка. В случае ID это относительно просто:
    if ($starting_day->id == 0) $starting_day -> create(); else $starting_day -> update();
    Кстати, save() в 3.1 убрали.
    Отпишусь позже, когда решу эту проблемку. Спасибо за советы!
  • ORM в Kohana 3.1?

    Oreolek
    @Oreolek Автор вопроса
    То есть, всё-таки ID должен быть INT и auto_increment? На #kohana мне сказали, что это вообще не проблема.
  • ORM в Kohana 3.1?

    Oreolek
    @Oreolek Автор вопроса
    Тогда он начинает ругаться на FOREIGN_KEY constraint fail потому что не вставляет:
    Cannot add or update a child row: a foreign key constraint fails (`web-site`.`events`, CONSTRAINT `fk_events_2` FOREIGN KEY (`starting_day`) REFERENCES `days` (`day`) ON DELETE NO ACTION ON UPDATE NO ACTION) [ INSERT INTO `events` (`name`, `starting_time`, `ending_time`, `place`, `person_in_charge`, `seats`, `owner`, `starting_day`, `ending_day`, `opened_until`) VALUES ('Трям', '11:00:00', '14:00:00', 'Неивестно', 'А. Н. Оним 12-34-56', '2', '4', '', '', '') ]

    В коде вот что:
    if (!($starting_day->find())) $starting_day -> create(); //чтобы $starting_day имел реальный ID
    $event->starting_day = $starting_day;


    Если же подавать $event->starting_day = $starting_day->day, то starting_day вообще не попадает в запрос INSERT (это поле попросту пропускается), что тоже противоречит FOREIGN_KEY.
  • ORM в Kohana 3.1?

    Oreolek
    @Oreolek Автор вопроса
    Не работает.
    Переписал связь с User так же. Вот что получилось в Event:

    protected $belongs_to = array (
    'creator' => array('model' => 'user','foreign_key' => 'owner'),
    'start' => array( 'model' => 'day', 'foreign_key' => 'starting_day'),
    'end' => array( 'model' => 'day', 'foreign_key' => 'ending_day'),
    'closing' => array('model' => 'day', 'foreign_key' => 'opened_until'),
    );


    А вот что в User:

    'creator' => array('model' => 'event','foreign_key' => 'owner'),

    На строчке $event->add('creator', ORM::factory('user',Auth::instance()->get_user()->id)); выдаёт Undefined index для creator.

    Поля в Event прописал все, включая owner.

    Вроде всё правильно. В чём может быть ошибка?
  • ORM в Kohana 3.1?

    Oreolek
    @Oreolek Автор вопроса
    Код моделей, собственно, у меня и не работает. Я его менял много раз… в общем, всё сводится либо к следующему в Event:

    protected $_has_many = array(
    'starting_day' => array(
    'model' => 'day',
    'foreign_key' => 'starting_day'),
    'ending_day' => array(
    'model' => 'day',
    'foreign_key' => 'ending_day'),
    'opened_until' => array(
    'model' => 'day',
    'foreign_key' => 'opened_until')
    );


    либо к следующему в Day:

    protected $_belongs_to = array(
    'starting_day' => array('model' => 'event', 'far_key' => 'starting_day'),
    'ending_day' => array('model' => 'event', 'far_key' => 'ending_day'),
    'opened_until' => array('model' => 'event', 'far_key' => 'opened_until'),
    );