2016-10-07 5 views
0

테이블의 기본 키가 id 컬럼이 아닌 경우 fuelphp에서 ORM을 사용하여 레코드를 찾을 수있는 방법이 있습니까? 예 : listing_id이 내 기본 키입니다. 그리고 내가 원하는 결과 얻을 수 없었다 :id가 fuelphp의 기본 키가 아닌 레코드를 찾으십시오.

$listing_id = Input::get('listing_id'); 
$entry = Model_ExampleData::find($listing_id); 
+0

데이터베이스 연결의 프로파일 러와 프로파일 링을 활성화하면 아래의 대답으로 인해 생성 된 SQL이 올바르지 않은 것을 알 수 있습니다. 그것 upvote 것을 잊지 마세요! – WanWizard

답변

1

보호 정적 기본적으로 $ _primary_key

이이 배열 ('ID')로 설정되어, 다른 열 이름을 사용하는 경우 또는 이 속성을 설정해야하는 여러 기본 키. 독특하고 불변 :

class Model_Article extends Orm\Model 
{ 
    protected static $_primary_key = array('aid'); 
} 

기본 키는 실제 기본 키가 있어야합니다

. 다른 목적 (일대일 관계의 외래 키와 같은)으로도 사용하지 마십시오. PK를 변경할 수 없으므로 작동하지 않습니다. Orm은 이것을 확인하지 않을 것이며, 언뜻보기에는 작동하는 것처럼 보일 수 있지만 문제가 발생할 것입니다. PK가 auto_increment (권장 됨)가 될 필요는 없으며 처음으로 PK를 직접 지정할 수 있습니다. 일단 설정되면 설정됩니다.

Docs.

0

당신은이 목적을 위해 마법의 방법 접두사가이 접두사를 추가 find_by_

, 당신은 모델 구성을 수정없이 모델 에서 임의의 필드를 사용하여 레코드 (들)을 찾기 위해 FuelPHP 말해, 여러 수 조건은 분할 필드 이름이 _and_ 사이 인 경우 가능합니다.

Model_ExampleData::find_by_FIELD($value) 
Model_ExampleData::find_by_FIELD1_and_FIELD2($value1, $value2) 
Model_ExampleData::find_all_by_FIELD($value) 
Model_ExampleData::find_all_by_FIELD1_and_FIELD2($value1, $value2) 
Model_ExampleData::count_by_FIELD($value1)