Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 19 мар 2019, 13:53

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: ORM запись в базу метод save()
СообщениеДобавлено: 18 сен 2013, 17:23 
Не в сети
Зеленый

Зарегистрирован: 14 июл 2013, 01:13
Сообщения: 4
Всем привет. Ребят, подскажите вот такой вопрос:

Код:
 $ofer =  ORM::factory('ofer')->where('id', '=', $id)->find();
        $massage = false;
        $count_oreders = ORM::factory('order')->count_all();
        $count = $ofer->count;
        $prod_id = $ofer->product_id;
        $order_number = ++$count_oreders;
             
         if (isset($_POST['submit'])) {
       
                    $sales = ORM::factory('sale');
                    $sales->count = $count;
                    $sales->product_id = $prod_id;
                    $sales->order_id = $order_number;
             
                try {
                    $sales->save();
                    $massage = true;
                }
                catch (ORM_Validation_Exception $e) {
                    $errors = $e->errors('validation');
                }
                       
            }


Эти переменные:
$sales->count = $count;
$sales->product_id = $prod_id;

не записываются в базу, хоть тресни....
Если значения указать явно:
Код:
$sales->count = 10; 
$sales->product_id = 1;

Всё гуд. Ни кто не сталкивался?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM запись в базу метод save()
СообщениеДобавлено: 18 сен 2013, 17:33 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
отслеживайте состояние данных с помощью var_export()
$ofer->loaded() служит для проверки загружена ли модель

$ofer = ORM::factory('ofer')->where('id', '=', $id)->find();
=
$ofer = ORM::factory('ofer', $id);

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM запись в базу метод save()
СообщениеДобавлено: 18 сен 2013, 19:36 
Не в сети
Зеленый

Зарегистрирован: 14 июл 2013, 01:13
Сообщения: 4
Спасибо, за подсказку.
Впервые вижу что бы модель не грузилась, но так и есть:
Код:
if (isset($_POST['submit'])) {
                             
               

                $sales = ORM::factory('sale');

                if($sales->loaded()){
                $sales->order_id = $order_number;
                $sales->count = $count;
                $sales->product_id = $prod_id;
                $sales->save();
                }
                else {
                    echo 'not work';

                }
               
           }


Странно, пустая модель, стандартный вызов, почему не загружает?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM запись в базу метод save()
СообщениеДобавлено: 18 сен 2013, 21:43 
Не в сети
Зеленый

Зарегистрирован: 14 июл 2013, 01:13
Сообщения: 4
не, не в этом дело. Через Query Builder такая же фигня, строка создаётся, но:
Код:
$sales->count = $count;
$sales->product_id = $prod_id;

вставляются нули.
Ребят, ну хелп же плиз....
Код:
 public function action_order()
    {   
        $auth = Auth::instance();
        $logged_in = $auth->logged_in('login');
        $user = $auth->get_user();
        $id = (int) $this->request->param('id');
        $ofer =  ORM::factory('ofer')->where('id', '=', $id)->find();
        $massage = false;
        $count_oreders = ORM::factory('order')->count_all();
       
        $order_number = ++$count_oreders;
       
        $count = (int)$ofer->count;
        $prod_id = (int)$ofer->product_id;
        $ofer_id = (int)$ofer->id;       
             
       
           if (isset($_POST['submit'])) {
               
               $ofer =  ORM::factory('ofer')->where('id', '=', $id)->find();
         
               $query = DB::insert('sales', array(                 
                 'product_id',
                 'count',
                 'order_id'))
                 ->values(array(
                  $prod_id,
                  $count,
                  $order_number
                ));
                 $query->execute();
           }
               
        $content = View::factory('index/ofers/v_ofer_order', array(
            'massage' => $massage,
            'order_number' => $order_number,
            'ofer'=>$ofer,
         
           
        ));

        // Выводим в шаблон
        $this->template->title = 'Оформление заказа';
        $this->template->page_title =  'Оформление заказа на ' . $ofer->title;
        $this->template->main_main = array($content);
       
    }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM запись в базу метод save()
СообщениеДобавлено: 18 сен 2013, 23:48 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
модель выложи, посмотри что там с этой таблицей, есть ли в ней вообще такая запись? чего как маленький то..

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM запись в базу метод save()
СообщениеДобавлено: 20 сен 2013, 15:12 
Не в сети
Зеленый

Зарегистрирован: 14 июл 2013, 01:13
Сообщения: 4
Записались)
Данные которые не записывались положил в массив, из него спокойно все записывается!
Код:
public function action_order()
    {   
   
        $id = (int) $this->request->param('id');
        $ofers =  ORM::factory('ofer')->where('id', '=', $id)->find_all();
        $my_arr = array();
       
               foreach($ofers as $key)
                {
                $my_arr[] = $key->product_id;
                $my_arr[] = $key->count;
                $my_arr[] = $key->id;
                }
               
           if (isset($_POST['submit'])) {
               $data = Arr::extract($_POST, array( // забираем данне из формы
                    'city',
                    'adress',
                    'delivery_date',
                    'email',
                    'phone',
                    'comment',
                    'pay',
                    ));
                $order_new = ORM::factory('order'); //и вставляем в таблицу orders
                $order_new->user_id = $user;// Добавляем ещё пару данных
                $order_new->order_cat_id = 1;
                $order_new->ofer_id = $my_arr[2];
                $order_new->values($data);
               // записываем позиции заказа
                $sal = ORM::factory('sale');
                $sal->count = (int)$my_arr[1];
                $sal->product_id = (int)$my_arr[0];
                $sal->order_id = $order_number;
               
                try {
                     $order_new->save();
                     $sal->save();   //всё в порядке сохранили заказ
                     $massage = true;    // вывели сообщение
                   
                }
                catch (ORM_Validation_Exception $e) {
                    $errors = $e->errors('validation');
                }
           
             
    }

Аллилуйя))) WinterSilence, спасибо за участие!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group