2016-08-03 1 views
-2

이 이미지는 내 MySQL 테이블입니다. enter image description here결과에 단지 사용자 테이블 행이 필요합니다.

그리고 내 코드입니다.

$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 또는 성 또는 상점이 하나 일 때도 중복 레코드가 표시되기를 원합니다. 모든 주소가 필요합니다.

+1

그냥 측 주석, 다음 시간 당신은 SQL 코드 또는 MySQL의 워크 벤치와 같은 도구에서 이미지 붙여 넣을 수 있습니다 : https://www.mysql.com/products/workbench/을 당신은 모든 주소 또는 모든 사용자가 필요 – Eduardo

답변

0

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); 
+1

모든 주소는? – Eduardo

관련 문제