Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

ORM вставка 2х записей в одну таблицу
http://forum.kohanaframework.su/viewtopic.php?f=33&t=219
Страница 1 из 1

Автор:  xrays72 [ 16 июн 2012, 18:01 ]
Заголовок сообщения:  ORM вставка 2х записей в одну таблицу

Здравствуйте!

Подскажите код для ORM чтобы в таблицу вставить 2 записи.
Так я вставляю одну запись в формате id юзера и id роли в таблицу Roles_Users:
Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Model_Register {

    public function reg($email, $password, $type) {
        $user = new Model_User();
        $user->username = $email;
        $user->email = $email;
        $auth = Auth::instance();
        $user->password = $auth->hash_password($password);
        $user->save();

        $role = new Model_RolesUser();
        $role->user_id = $user->id;
        $role->role_id = $type;
        $role->save();

        return true;
    }

}

Как одновременно вставить 2 записи с одинаковым id юзер, но разными id роли?

Пока что нашел такое решение:
Код:
$query = DB::insert('roles_users', array('user_id', 'role_id'))->values(array($user_id, $type),array($user_id, $type+2));
$query->execute();

Но это не ORM.

Автор:  qed [ 16 июн 2012, 18:31 ]
Заголовок сообщения:  Re: ORM вставка 2х записей в одну таблицу

Недавно сталкивался с похожей ситуацией, насколько я понял, в кохане в орм нету возможности делать мультиинсерты, так что надо либо генерировать несколько запросов в цикле, либо использовать QueryBuilder, что вы и сделали во втором примере.

Автор:  admin [ 16 июн 2012, 19:01 ]
Заголовок сообщения:  Re: ORM вставка 2х записей в одну таблицу

А что нужно обязательно орм ?

Автор:  xrays72 [ 16 июн 2012, 19:53 ]
Заголовок сообщения:  Re: ORM вставка 2х записей в одну таблицу

admin писал(а):
А что нужно обязательно орм ?

я думал что ORM более предпочтительней и думал, что через него нужно делать, а когда не получилось, то решил через DB сделать.

Автор:  mamahtehok [ 17 июн 2012, 14:39 ]
Заголовок сообщения:  Re: ORM вставка 2х записей в одну таблицу

Для стандартного модуля auth это можно сделать так.
Код:
 /** @var Model_Auth_User $user  */
                    $user = ORM::factory('user')->create_user($_POST, array('username','password','email'));
                    $user->add('roles',ORM::factory('role')->where('name','=','login')->find())->add('roles',ORM::factory('role')->where('name','=','admin')->find());

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/