это изображение моих таблиц MySQL.
И это мои коды.
$buyuser = CHtml::encode($_POST['buyuser']);
$criteria = new CDbCriteria;
$criteria->distinct = FALSE;
$criteria->with = array('addresses'=>array('alias'=>'adres', 'together'=>true),'addresses.city'=>array('alias'=>'city', 'together'=>true));
$criteria->addCondition('t.name LIKE "'.$buyuser.'%" OR t.name LIKE "% '.$buyuser.'%" OR t.lastname LIKE "'.$buyuser.'%" OR t.lastname LIKE "% '.$buyuser.'%" OR adres.store LIKE "'.$buyuser.'%" OR adres.store LIKE "% '.$buyuser.'%" OR city.name LIKE "'.$buyuser.'%" OR city.name LIKE "% '.$buyuser.'%"');
$users = Users::model()->findAll($criteria);
Это работает, но я хочу также видеть дубликаты записей, когда city.name или фамилия или магазин едины.
Мне нужны все адреса.
Я изменил базовую таблицу в findAll и мой ответ.
$buyuser = CHtml::encode($_POST['buyuser']);
$criteria = new CDbCriteria;
$criteria->distinct = FALSE;
$criteria->with = array('user'=>array('together'=>true),'city'=>array('together'=>true));
$criteria->addCondition('user.name LIKE "'.$buyuser.'%" OR user.name LIKE "% '.$buyuser.'%" OR user.lastname LIKE "'.$buyuser.'%" OR user.lastname LIKE "% '.$buyuser.'%" OR CONCAT(user.name," ",user.lastname) LIKE "'.$buyuser.'%" OR CONCAT(user.name," ",user.lastname) LIKE "% '.$buyuser.'%" OR t.store LIKE "'.$buyuser.'%" OR t.store LIKE "% '.$buyuser.'%" OR city.name LIKE "'.$buyuser.'%" OR city.name LIKE "% '.$buyuser.'%"');
$addresses = Addresses::model()->findAll($criteria);
Других решений пока нет …