2010-09-27 2 views
0

Просто подходите к разработке MVC и эффектам тортов, поэтому меня путают с именами имен таблиц и идентификаторами ссылок.выпечка с PHPcake правильная база данных именование

В качестве таблицы свойств Asset и ценностей, присвоенных в Assets, используется поле asset_status_id, которое предназначено для ссылки на таблицу Asset_Statuses. Эта таблица представляет собой простой список возможных статусов, которые могут быть доступны в любой момент (активные, Inactive, Sold, Maintenace и т. Д.) Я решил использовать таблицу для этого списка, так как я думаю, что мне нужно будет добавить дополнительные параметры в какое-то время. B) У меня есть поле «sequence» в этой таблице, поэтому я могу управлять порядок сортировки, в котором они будут отображаться в любых раскрывающихся списках.

«Cake Bake'ing, кажется, видит таблицу под названием Asset_Statuses как указание, что она существует, чтобы описать связь между таблицей Активы и несуществующей таблицей статусов. Теперь я знаю, что вы думаете, просто позвоните в таблицу статуй? Но у меня есть таблицы «Status», которые я бы хотел использовать, например, Domain_Status, которые, конечно же, не используют одинаковые списки состояний.

Так что же такое соглашение об именах, которое я должен использовать, чтобы все это работало легко?

ответ

0

Я не уверен, что множественное число статуса актива - это активы (вы должны проверить), а также таблица должна быть в нижнем регистре, поэтому asset_states, а не Asset_States. Но вы можете использовать совершенно другую таблицу в своих моделях. Проверьте this. Поэтому в основном создайте модель, назовите ее как хотите. То есть AssetState and put:

var $useTable = 'asset_states'; 

, и я думаю, у вас не будет проблем. Просто убедитесь, что в ваших отношениях belongsTo, hasMany вы обеспечиваете правильное имя класса т.е .:

var $belongsTo = array(
    'AssetState' => array(
     'className' => 'AssetState' //Most important 
    ) 
); 
+0

$ useTable не требуется, особенно при создании новой таблицы. я бы сказал, что его лучше всего держать на время, когда вы строите систему, используя устаревшую базу данных. Другое примечание: все модели являются Singular, а не множественными, как вы предложили. – dogmatic69

+0

Настоящие модели являются единственными, это опечатка. Но то, что нужно парню, - это использовать таблицу asset_statuses, поскольку таблица состояния уже используется. На самом деле вопрос действительно запутан, так что и я, и вы догадываетесь :) Я все равно поменю именование модели (хотя это не нужно, потому что это пример). –

+0

также говорит, что className является самым важным неверным, код $ принадлежитTo = массив ('AssetState'); будет работать одинаково, если предположить, что в файле APP/models dir (или в таблице активов) в db есть только модель asset_state.php), это важно только при использовании плагинов/некондиций – dogmatic69

0

вы можете просто быть лучше использовать таблицу статусов, так как она может быть использована во всем, а не только для активов. это можно сделать легко, добавив поле модели, поэтому его идентификатор, модель, статус.

то ваше соединение просто имеет условие.

class Asset extends AppModel{ 
    var $belongsTo = array(
     'Status' => array(
      'className' => 'Status' // not needed with the proper conventions and not in a plugin, 
      'conditions' => array('Status.model' => 'Asset') 
     ) 
    ); 
} 

вы можете использовать поведение автоматизировать настройку поля модели в BeforeSave

В качестве примечания, все таблицы должны быть в нижнем регистре, а не смешной случай, который вы используете. Это может быть причиной того, что они не работают так, как должны.

Смежные вопросы