Обход ограничения
Должны выбираться все пользователи где photo != nophoto.jpg, но не отрабатывает с некоторых пор
З.Ы Не судите строго мою «стрепню», пытаюсь вкурить что здесь к чему
$q = $modx->newQuery('modUser');
$q->sortby('RAND()');
$q->innerJoin('modUserProfile', 'Profile');
$q->where(array(
'Profile.photo:!=' => "nophoto.jpg",
));
$result = $modx->getCollection('modUser', $q);
foreach ($result as $user){
$myuserid = $user->id;
$user = $modx->getObject('modUserProfile', array('id' => $myuserid));
$rating = $user->get('fax');
$result = $modx->query("SELECT * FROM modx_users WHERE id = '$user->id'");
$row = $result->fetch(PDO::FETCH_ASSOC);
$myusername = $row['username'];
echo $myusername.'
';
}
если заменить условие на 'Profile.gender' => '1',
то все это условие отлично воспринимаетсяЗ.Ы Не судите строго мою «стрепню», пытаюсь вкурить что здесь к чему
Комментарии: 31
Мда. Как же это можно написать такой код, когда и тут, а на rtfm.modx.com и на bezumkin.ru куча примеров и образцов.
Внутри foreach переменная $user перебивается — была объектом modUser, а стала modProfile. А обращение идет как к modUser.
Зачем нужен селект, если username можно получить просто
Внутри foreach переменная $user перебивается — была объектом modUser, а стала modProfile. А обращение идет как к modUser.
Зачем нужен селект, если username можно получить просто
$myusername = $user->username;
А это чтоб врагов запутать?$rating = $user->get('fax');
Ужас, ужас.
Исключил то, на что вы указали, но лучше от этого не стало
З.Ы. Вы помогаете мне стать лучше
$q = $modx->newQuery('modUser');
$q->innerJoin('modUserProfile', 'Profile');
$q->where(array(
'Profile.photo:!=' => "nophoto.jpg",
));
$result = $modx->getCollection('modUser', $q);
foreach ($result as $user) {
echo $myusername = $user->username.'
';
}
Зачем нужен селект, если username можно получить простоТут вы правы
А это чтоб врагов запутать?Я бы не сказал, что мне есть кого путать, да и как по-другому выбрать значение поля fax
З.Ы. Вы помогаете мне стать лучше
Training? No, Thanks
Пфф, тогда не удивляйся, что никто не помогает.
Алексей, все хорошо, в ваших тренингах по шопкиперу и рассылке всякой нечисти юзерам, нет необходимости и не стоит каждого, кому нужна помощь, тыкать лицом в… курсы
Ты бы хоть ознакомился. :) Это подробный мануал по написанию своих дополнений. Без «рассылок» и нечисти. Хочешь — учишься и делаешь сам, не хочешь или не можешь — оплачиваешь труд других. :)
Непременно ознакомлюсь
xD
Я даже не знаю как реагировать)
При чём здесь я и шопкипер? Я шопкипер в глаза никогда не видел)
Какие рассылки?
Тренинги эти не мои, а Василия Наумкина. И ссылка эта на его сайт.
И да, «тренинги», если ты не заметил, — бесплатны.
И да, лично тебе этот курс необходим, иначе я бы в него тебя не «тыкал».
Такие дела
Я даже не знаю как реагировать)
При чём здесь я и шопкипер? Я шопкипер в глаза никогда не видел)
Какие рассылки?
Тренинги эти не мои, а Василия Наумкина. И ссылка эта на его сайт.
И да, «тренинги», если ты не заметил, — бесплатны.
И да, лично тебе этот курс необходим, иначе я бы в него тебя не «тыкал».
Такие дела
Уважаемый Алексей, реагируйте спокойнее :D .Oткройте ту ссылку, что вы мне «сунули», там 2 курса:
1. Рассылка «чего-то там» юзерам
2. Пособие по освоению дополнения, miniShop
Думаю, теперь несколько просветлело у вас
То, что курсы На(без)умкина, и что вы не он, тоже я как-то понял,
Сайт Наумкина? Seriously?
Хм… Курсы бесплатные, спасибо действительно не заметил
P.S Offtop :(
1. Рассылка «чего-то там» юзерам
2. Пособие по освоению дополнения, miniShop
Думаю, теперь несколько просветлело у вас
То, что курсы На(без)умкина, и что вы не он, тоже я как-то понял,
Сайт Наумкина? Seriously?
Хм… Курсы бесплатные, спасибо действительно не заметил
P.S Offtop :(
Чувак, ты по-моему упорот (без обид, говорю с улыбкой на лице)), либо слишком быстр и не внимателен.
«Рассылка «чего-то там» юзерам» — это не что иное, как курс обучения, в котором можно пройти весь путь по созданию modx-компонента — с нуля до выгрузки в репозиторий. Так уж сложилось, что курсе создаётся компонент именно рассылок email-уведомлений пользователям сайта. Никто тебя не заставляет ни на что подписываться и ни на что не подписывать других.
p.s. будь повнимательнее
«Рассылка «чего-то там» юзерам» — это не что иное, как курс обучения, в котором можно пройти весь путь по созданию modx-компонента — с нуля до выгрузки в репозиторий. Так уж сложилось, что курсе создаётся компонент именно рассылок email-уведомлений пользователям сайта. Никто тебя не заставляет ни на что подписываться и ни на что не подписывать других.
p.s. будь повнимательнее
Хм… Курсы бесплатные, спасибо действительно не заметилА если бы они были платные (как раньше, полгода назад), ты бы за эту ссылку обвинил бы меня в аффилированности?)
обвинил бы меня в аффилированности?)с вероятностью 95% — да :D
Нда… Меняй взгляды — пригодится.
Что тебя смущает в моих заметках и фамилии?
Seriously?
Seriously?
Вы помогаете мне стать лучшеПрям рекламный слоган. Ну раз настрой позитивный, то продолжим.
Давай посмотрим, что там в поле photo есть
$q = $modx->newQuery('modUser');
$q->select('Profile.photo');
$q->innerJoin('modUserProfile', 'Profile');
$result = $modx->getCollection('modUser', $q);
foreach ($result as $user) {
echo $user->photo.'
';
}
Есть что-то кроме «nophoto.jpg»
Забавно, 500-ая ошибка Internal Server Error, если 2 строку убрать, то ошибка пропадает
.htaccess посмотрел, вроде все нормально
И вообще, возможно ли поле photo выбрать? Оно же по-моему также как fax, state и прочие в другом месте хранится ( собственный воспаленный мозг)
Если вторую строку на это заменить
.htaccess посмотрел, вроде все нормально
И вообще, возможно ли поле photo выбрать? Оно же по-моему также как fax, state и прочие в другом месте хранится ( собственный воспаленный мозг)
Если вторую строку на это заменить
$q->select(array(
'modUser.id',
'modUser.username',
'Profile.fullname',
'Profile.email',
));
то все поля выбираются без ошибок $q = $modx->newQuery('modUser');
$q->select(array(
'modUser.id',
'modUser.username',
'Profile.fullname',
'Profile.email',
'Profile.photo'
));
$q->innerJoin('modUserProfile', 'Profile');
$result = $modx->getCollection('modUser', $q);
foreach ($result as $user) {
echo $user->photo.'
';
}
Результат:/assets/images/q8AUyq0ydhw.jpg
/assets/images/NUZxHwvjoBw.jpg
/assets/images/R0fzL82P1bg.jpg
/assets/images/nophoto.jpg
/assets/images/MVI1FuDzmFY.jpg
мде, тут и прочие поля можно выбрать, красота
Тебе уже понятно, что условие
Правильно будет
'Profile.photo:!=' => "nophoto.jpg"
не будет работать?Правильно будет
'Profile.photo:NOT LIKE' => "%nophoto.jpg",
Дальше. Тебе нужно всего 2 поля — username и fax. Так и пишем.$q = $modx->newQuery('modUser');
$q->setClassAlias('User');
$q->innerJoin('modUserProfile', 'Profile');
$q->select('User.id,User.username,Profile.fax');
$q->where(array(
'Profile.photo:NOT LIKE' => "%normal",
));
$users = $modx->getCollection('modUser', $q);
foreach ($users as $user) {
echo $user->username,'[br]';
// Сохраним fax в переменной $fax, а не в $rating
$fax=$user->fax;
}
П.С. Тег [br] измени на правильный.
И все-таки, получается, что id, username, password хранятся отдельно от fax,state,photo и прочих?
одни хранятся в данных о юзере, а вторые о профиле, поправьте если ошибаюсь
одни хранятся в данных о юзере, а вторые о профиле, поправьте если ошибаюсь
Получается что так.
Спасибо, Сергей, может подскажете где про xPDO можно почитать, кроме как
rtfm.modx.com/xpdo/2.x/class-reference/xpdo, или вышеупомянутые тренинги смотреть?
rtfm.modx.com/xpdo/2.x/class-reference/xpdo, или вышеупомянутые тренинги смотреть?
Спасибо,
Я так понял в полях юзера нет полей со значением Int кроме как ID, как думаете можно ли перевести значение поля fax из строки в число, и сделать сортировку по нему?
Я так понял в полях юзера нет полей со значением Int кроме как ID, как думаете можно ли перевести значение поля fax из строки в число, и сделать сортировку по нему?
Возможно только с изменением модели самого MODX. Чтобы этого не делать, оптимально создать своего пользователя, унаследовав родной modUser.
Но, не изучив xPDO, лучше не торопиться с расширением стандартных объектов.
Но, не изучив xPDO, лучше не торопиться с расширением стандартных объектов.
а c extended полями?
Все extended поля представляют собой элементы массива, которые сохраняются в базе в json'е. Естественно, никакой сортировки штатными средствами по ним быть не может.
Все решилось проще, изменил в БД в таблице modx_users_attributes значение поля fax вместо varchar на int :)
Не лучший метод.
Соглашусь, но это было сделать проще, опять же никаких проблем пока не возникло ( и надеюсь не возникнет )
Ошибка всех начинающих. А с обновлением чего будешь делать?
Все решается очень просто. Нужно просто учить матчасть. И ни в коем случае не лезть в ядро.
Все решается очень просто. Нужно просто учить матчасть. И ни в коем случае не лезть в ядро.
$q->select('User.id,User.username, cast(Profile.fax AS UNSIGNED) as int_fax');
$q->sortby('int_fax');
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.