Выборка записей с одной таблицы по условию с друго
Добрый день. Расширяю компонент modExtra и столкнулся с Поиском по таблицам, а именно поиск по второй таблице, а вывод информации с первой (двухтабличный запрос(или как-то так)). Сейчас поиск работает по одной таблице(ту которую мы смотрим) но по мимо этого в некоторых таблицах мне нужен поиск с другой таблицы.
Вот SQL запрос который поидее должен выводить такой поиск
Но не могу понять как его внедрить в php код. Сейчас работает однотабличный поиск таким образом
Вот SQL запрос который поидее должен выводить такой поиск
SELECT *
FROM `modx_driverlicense_licenses`
WHERE `names` = ( SELECT `id`
FROM `modx_driverlicense_notface`
WHERE `modx_driverlicense_notface`.`name` LIKE '%Коломи%' )
Но не могу понять как его внедрить в php код. Сейчас работает однотабличный поиск таким образом
public function prepareQueryBeforeCount(xPDOQuery $c) {
$query = $this->getProperty('query');
if (!empty($query)) {
$c->andCondition(array(
'number:LIKE' => '%'.$query.'%'
));
}
return $c;
}
Как его «усовершенствовать» до двухтабличного запроса? Комментарии: 5
Легким движением руки брюки превращаются…
public function prepareQueryBeforeCount(xPDOQuery $c) {
$query = $this->getProperty('query');
if (!empty($query)) {
// Нужно вставить название своего объекта второй таблицы
$q = $modx->newQuery('YourClassObject');
$q->select('id');
$q->where(array('name:LIKE' => '%'.$query.'%'));
$ids = array();
while($row = $q->fetch(PDO::FETCH_ASSOC)) {
$ids[] = $row['id'];
}
if (!empty($ids)) {
$c->where(array(
'name:IN' => $ids
));
}
}
return $c;
}
ем…
Call to a member function newQuery() on a non-object in
вставил $q = $modx->newQuery('DriverLicenseNotface');
Ну да, нужно так
$q = $this->modx->newQuery('DriverLicenseNotface');
Ну и…
П.С. Ребята, вы когда просите помощи, обратную связь не выключайте. Реагируйте как-то.
Ведь желание помогать обратно пропорционально вашей вежливости.
П.С. Ребята, вы когда просите помощи, обратную связь не выключайте. Реагируйте как-то.
Ведь желание помогать обратно пропорционально вашей вежливости.
Согласен на все 100%
вот код самого класса
вот код самого класса
class DriverLicenseLicensesGetListProcessor extends modObjectGetListProcessor {
public $objectType = 'DriverLicenseLicenses';
public $classKey = 'DriverLicenseLicenses';
public $defaultSortField = 'id';
public $defaultSortDirection = 'DESC';
public function prepareQueryBeforeCount(xPDOQuery $c) {
$query = $this->getProperty('query');
$c->where(array(
'deleted' => 0,
));
if (!empty($query)) {
/*$c->andCondition(array(
'number:LIKE' => '%'.$query.'%',
'names:OR' => "SELECT 'id'
FROM `modx_driverlicense_notface`
WHERE `modx_driverlicense_notface`.`name` LIKE '%".$query."%'"
));*/
// Нужно вставить название своего объекта второй таблицы
$q = $this->$modx->newQuery('DriverLicenseNotface');
$q->select('id');
$q->where(array('name:LIKE' => '%'.$query.'%'));
$ids = array();
while($row = $q->fetch(PDO::FETCH_ASSOC)) {
$ids[] = $row['id'];
}
if (!empty($ids)) {
$c->where(array(
'name:IN' => $ids
));
}
}
return $c;
}
}
Cannot access empty property in line 28
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.