Спасибо, изучаю, но туго как то все получается)) Поэтому и приходиться время от времени к Вам обращаться.
Поставил и изучил пакет Peoples. Мне сразу показался подозрительным ваш первый запрос [[!Peoples? &where={"Profile.extended":"age":"31"}]] и сейчас я точно знаю что он у вас неправильный в корне.
Peoples при выполнении так же формирует обычный xPDO-запрос (типа того, что я привел выше), и в качестве условия where принимает массив или JSON-строку. {"Profile.extended":"age":"31"} - это не правильная JSON-строка, при попытке разбора ее метод json_decode вернет пустое значение, то есть условие where не будет учтено в принципе, будут выведены все пользователи (точнее их юзернеймы, а не объекты пользователей). А условие &where={"id":31} будет работать, но вернет только пользователя с id=31, если таковой будет иметься.
еще раз: изучайте xPDO, как бы сложно это не казалось. Пока вы не будете понимать xPDO, вы ничего не будете по настоящему понимать в MODX-е. И pdoTools вас не спасет, если вы не будете понимать xPDO, так как pdoTools так же основывается на xPDO, просто это синтаксический сахар.
Какое именно поле? Которое в extended? Это отдельная песня. Там JSON-строка. Во-первых, по ним нельзя на уровне SQL-запроса выполнить поиск (Можно только сначала получить все данные, разобрать extended-поле и отсеять лишние объекты). Во-вторых, из-за на стороне php приходится порой использовать дополнительную логику. Например, вот так: <php
$q = $modx->newQuery('modUser');
$q->innerJoin('modUserProfile', 'Profile');
$q->select(array(
"Profile.*",
"modUser.*",
));
$users = array();
foreach($modx->getCollection('modUser', $q) as $user){
if(
$extended = json_decode($user->get('extended'), 1)
AND !empty($extended['age'])
AND $extended['age'] == 31
){
$users[] = $user;
}
}
Ага, разобрался. Один момент хочу уточнить - а как мне вывести здесь дополнительное поле? $q->where(array(
'Profile.city' => "Москва",
)); Вместо этого 'Profile.city' что писать?
Все равно ничего не выводит. Ума не приложу, где ошибка.
А сниппет Peoples установлен? Изучайте xPDO. $q = $modx->newQuery('modUser');
$q->innerJoin('modUserProfile', 'Profile');
$q->where(array(
'Profile.city' => "Москва",
));
$q->select(array(
"Profile.*",
"modUser.*",
));
$s = $q->prepare();
$s->execute();
while($row = $s->fetch(PDO::FETCH_ASSOC)){
print "". $row['username'];
}