X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> PHP / ORM
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 7.6.2011, 17:39; Ответить: Letmetouchyou
Сообщение #1


( это Letmetouchyou, просто не помню пароль от аккаунта на память, так что пришлось войти так).
Вопрос про ОРМ.
Вот кусок кода (Yii Framework) :

[PHP]$AdminIds = Users::model()->findAll('role=:Role', Array(':Role'=>'admin'));

$criteria=new CDbCriteria;

$criteria->select = Array('email','firstname');
$criteria->condition = Array('userID=:userID');
$criteria->params = Array(':userID'=>$AdminIds);

$AdminInfo = UserProfile::model()->findAll($criteris);[/PHP]

Если словами, то мы берем данные из одной таблицы, и уже с полученными деанными делаем запрос к другой.
Ничего сложно.
Вопрос: как в таком случае одбойтись один запросом а не двумя?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
nexus_hb
nexus_hb
сообщение 8.6.2011, 16:38; Ответить: nexus_hb
Сообщение #2


А подробнее можно? какая структура базы данных, какие поля тебе нужны?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 8.6.2011, 16:55; Ответить: Letmetouchyou
Сообщение #3


Да без разницы.
Допустим есть таблица Users (id, name, firstname)
и таблица UsersInfo (id, userID, email, phone, skype)

и задача как один запросом узнатьвсю информацю и пользователе, используя ActiveRecord (Yii) (ORM)..
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
maxim_malets
maxim_malets
сообщение 8.6.2011, 17:09; Ответить: maxim_malets
Сообщение #4


Посмотри relations и scopes в документации по yii

Грубо говоря связываешь две таблицы и фильтруешь запрос к оригинальной через админ скоуп
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 9.6.2011, 1:45; Ответить: Letmetouchyou
Сообщение #5


это если по одному ключу одна запись, а если напрмер в одной таблице авторы, а вдругой книги. и у одного автора может быть несколько книг. Точно также через relations? а можно на примере пожалуйста.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
maxim_malets
maxim_malets
сообщение 9.6.2011, 10:15; Ответить: maxim_malets
Сообщение #6


Без проблем, в таком случае тип релейшена будет HAS_MANY, в yii guide все прекрасно расписано и с примерами. Еще больше примеров в их кукбуке с блогом.

Кстати, фактически ORM может делать два и более запросов, обязательно посмотри парметр with что б не отрабатывал lazy load
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 16.6.2011, 18:32; Ответить: Letmetouchyou
Сообщение #7


вот шас столкнулся с пробелмой:

[PHP]$user = UserProfile::model()->find( Array(
'select'=>'timezone, firstname',
'with'=>'user',
'condition'=>'userID = :userId',
'params'=>Array(
':userId'=> Yii::app()->user->id
)
)
);
$timezone = $user->timezone;


$userLogin = $user->user->login;[/PHP]
все правилльно работает, но только по зависимости user вытягивает все данные. А как сделать, чтобы по зависимости, вытягивало только нужные ?
ПРобовал так:

[PHP]$user = UserProfile::model()->find( Array(
'select'=>'timezone, firstname, u.login',
'with'=>Array( 'user' =>array(
'alias' => 'u'
),
),
'condition'=>'userID = :userId',
'params'=>Array(
':userId'=> Yii::app()->user->id
)
)
);
$timezone = $user->timezone;
$userName = $user->firstname;

$userLogin = $user->login;[/PHP]

Но не работает.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
maxim_malets
maxim_malets
сообщение 16.6.2011, 21:54; Ответить: maxim_malets
Сообщение #8


А если без алиаса, просто user.login?

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3397 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1240 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44898 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Есть спецы по php/laravel?
3 Mixatraider 1889 26.5.2023, 20:48
автор: Mixatraider
Открытая тема (нет новых ответов) Опытный PHP\Python разработчик в поиске интересных задач
6 daikzlex 3402 25.5.2023, 13:55
автор: daikzlex


 



RSS Текстовая версия Сейчас: 18.4.2024, 22:21
Дизайн