2016-10-07 6 views
0

Есть ли способ найти запись с использованием ORM в топливной системе, если первичный ключ таблицы не id столбец?Найти запись, где id не является первичным ключом в топливеphp

Например, listing_id является моим основным ключом. И я не мог получить желаемый результат с:

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

Включите профилировщик и профилирование соединения с базой данных, и вы увидите, что сгенерированный SQL неверен из-за ответа ниже. Не забудьте укрепить его! – WanWizard

ответ

1

защищенный статический $ _primary_key

По умолчанию установлено в массив («ид»), если вы используете другое имя столбца или несколько первичных ключей необходимо установить это свойство.

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

Первичный ключ должен быть реальным первичным ключом: уникальный и неизменным. Не используйте его для других целей (например, внешний ключ в отношении одного-одного), который не будет работать, поскольку ПК не может быть изменен. Орм не будет проверять это, и хотя это может показаться на первый взгляд, вы столкнетесь с проблемами. Не требуется, чтобы 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) 
Смежные вопросы