2016-10-12 8 views
0

나는 아래이 ERD가 : 내가 제공 엔티티 ID의 배열에 포털베이스의 목록을 검색 할 때, 내가 가진Phalcon 치명적인 오류

enter image description here

Relations are as follow, Entity to Host is One to One Host to Portal is One to Many (One Host to Many Portal)

class Entity extends Model 
{ 
    public function initialize() 
    { 
     $this->hasOne(
      "entity_id", 
      "Host", 
      "entity_id" 
     ); 
    } 
} 

class Host extends Model 
{ 
    public function initialize() 
    { 
     $this->belongsTo(
      "entity_id", 
      "Host", 
      "entity_id" 
     ); 
     $this->hasMany(
      "host_id" 
      "Portal", 
      "host_id" 
     ); 
    } 
} 
class Portal extends Model 
{ 
    public function initialize() 
    { 
     $this->belongsTo(
      "portal_id", 
      "Host, 
      "portal_id" 
     ); 
    } 
} 

을 치명적인 오류.

Fatal error: Call to undefined method Phalcon\Mvc\Model\Resultset\Simple::getHost()

$hostObj = Host::find(['entity_id IN ({ids:array})', 
      'bind' => array('ids' => $entity_id)]); 

if($hostObj) 
{ 
    $portals = $hostObj->Portal; 
} 

는 기본적으로 목표는 제공 ENTITY_ID의 배열에 포털베이스의 목록을 검색 할 수있는 포털을 검색하기 위해 내 컨트롤러 코드입니다. 그러나 필자는 필자의 모델 관계가 치명적인 오류로 이어지는 것은 무엇이 잘못된 것인지 궁금합니다. 당신은`gethost를()를 사용하는 경우

+0

처럼 (Resultset에서 findFirst 선택하거나 행을 사용하거나 필요 결과 집합을 반환'? – Timothy

답변

-1

찾기 방법을 사용하여 배열 같은 스타일 $portals[0], 또는 $portals->getFirst() 또는 $portals->offsetGet('0')

+0

가 아닌가요 findFirst는 발견 된 첫 번째 행만 가져올 것입니다? entity_id에 포털 기반 목록이 필요하기 때문에 작동하지 않습니다 – user1149244

+0

firstFirst는 첫 번째 행을 가져옵니다. 발견 된 모든 행을 가져 오지 않습니다. – user1149244

+0

그런 다음 $ hostObj는 결과 집합입니다. 당신은 그것으로부터 row를 선택해야합니다. 당신은 당신의 관계가 틀렸음에도 불구하고 당신이 원할 것이기를 원한다면 query builder를 사용할 필요가 있습니다. docs. BelongsTo 첫 번째 인수는 현재 모델의 필드이고 두 번째는 관련 클래스이며 세 번째는 ** 관련 모델 **의 필드입니다. hasMany와 똑같습니다. 호스트에'portal_id' 필드가 표시되지 않습니다. – Juri