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

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 28 мар 2024, 21:21

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




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: вопрос по ORM
СообщениеДобавлено: 06 авг 2012, 22:45 
Не в сети
Бывалый

Зарегистрирован: 06 авг 2012, 22:39
Сообщения: 91
затупился сегодня. имеем стандартные модули ORM и auth

допустим, чтобы выбрать список админов, делаем примерно следующее:
Код:
$role = ORM::factory('role')->where('name','=','admin')->find_all();
$users = $role->users;


а вот как выбрать из бд ТОЛЬКО юзверей с ролью login, но без роли admin. а то получается админы имеют две роли, а юзвери одну


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ORM
СообщениеДобавлено: 06 авг 2012, 23:30 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Rush64 писал(а):
а то получается админы имеют две роли, а юзвери одну


А как это так у вас получается?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ORM
СообщениеДобавлено: 07 авг 2012, 00:37 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
to Sergey: в стандартном auth для любого зарегистрированного пользователя назначается роль login, admin это дополнительная роль, таких ролей может быть несколько, но для входа login обязательна.

to Rush64:
Код:
$role = ORM::factory('role')->where('name','=','login')->where('name','!=','admin')->find_all();
$users = $role->users;

Как-то так...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ORM
СообщениеДобавлено: 07 авг 2012, 00:44 
Не в сети
Бывалый

Зарегистрирован: 06 авг 2012, 22:39
Сообщения: 91
как то так я пробовал, только вместо != юзал <> как в mysql)
завтра с утра попробую, отпишусь


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ORM
СообщениеДобавлено: 07 авг 2012, 02:25 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
все же код будет посложнее
Код:
/*
 * код выберет всех пользователей у котрых нету роли админ
 *
 */
        $login = ORM::factory('role',array('name'=>'admin'))->users->find_all();
        foreach ($login as $user) {
            $ids[] = $user->id;
        }
        $users = ORM::factory('user')->where('id','NOT IN',$ids)->find_all()->as_array();



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ORM
СообщениеДобавлено: 07 авг 2012, 10:13 
Не в сети
Бывалый

Зарегистрирован: 06 авг 2012, 22:39
Сообщения: 91
это конечно рабочий вариант, но уже не такой красивый. я думал есть элегантное решение)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ORM
СообщениеДобавлено: 07 авг 2012, 13:34 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
Ну можно конечно join'ами замутить как нибудь...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ORM
СообщениеДобавлено: 07 авг 2012, 20:14 
Не в сети
Бывалый

Зарегистрирован: 06 авг 2012, 22:39
Сообщения: 91
через DB::query имеешь ввиду? для меня просто в новинку InnoDB, я бы уже давно так сделал)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ORM
СообщениеДобавлено: 07 авг 2012, 20:45 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
пораметры DB::query можно использовать совместно с ORM. Т.е. полчится типа того
Код:
$users = ORM::factory('user')
 ->join('roles_users')
 ->on('user.id','=','roles_users.user_id')
 ->where('role','!=','2');

Но как мне такая запись (а на самом деле реально рабочая будет еще более грамоздкой) еще менее красива, чем тот код который я привел ранее )))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ORM
СообщениеДобавлено: 07 авг 2012, 22:04 
Не в сети
Бывалый

Зарегистрирован: 06 авг 2012, 22:39
Сообщения: 91
зато тут один запрос, а там два + foreach


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

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


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

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


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

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