internet_access_codesとradacctの 2 つのテーブルがあります。internet_access_codesには多数
のradacctレコードがあります。
ジョインはinternet_access_codes.code = radacct.username AND internet_access_codes.fk_ship_id = radacct.fk_ship_id
2 つのモデルを作成し$hasMany
、それぞれ およびを使用して、 およびinternet_access_codes$belongsTo
レコードを取得するときに関連するradacctレコードがプルされるようにしたいと考えました。
コードは次のとおりです。
class InternetAccessCode extends AppModel{
var $name = 'InternetAccessCode';
var $hasMany = array(
'Radacct' => array(
'className' => 'Radacct',
'foreignKey'=> false,
'conditions'=> array(
'InternetAccessCode.code = Radacct.username',
'InternetAccessCode.fk_ship_id = Radacct.fk_ship_id'
),
)
);
}
class Radacct extends AppModel{
var $name = 'Radacct';
var $useTable = 'radacct';
var $belongsTo = array(
'InternetAccessCode' => array(
'className' => 'InternetAccessCode',
'foreignKey' => false,
'conditions'=> array(
'InternetAccessCode.code = Radacct.username',
'InternetAccessCode.fk_ship_id = Radacct.fk_ship_id'
)
),
);
}
internet_access_codesfind()
からレコードを取得すると、関連するすべてのradacctレコードも取得できると期待しています。ただし、結合を行わなかったため、エラーが発生しました。
結果とエラーは次のとおりです。
Array
(
[InternetAccessCode] => Array
(
[id] => 1
[code] => 1344444440
[bandwidth_allowed] => 20000
[time_allowed] => 30000
[expires_at] => 31536000
[cost_price] => 0.00
[sell_price] => 0.00
[enabled] => 1
[deleted] => 0
[deleted_date] =>
[fk_ship_id] => 1
[downloaded_at] => 2011-09-10 22:18:14
)
[Radacct] => Array
(
)
)
エラー:警告 (512): SQL エラー: 1054: 'where 句' の列 'InternetAccessCode.code' が不明です [CORE/cake/libs/model/datasources/dbo_source.php、684 行目]
クエリ: SELECT
Radacct
.id
、Radacct
。fk_ship_id
、Radacct
。radacctid
、Radacct
。acctsessionid
、Radacct
。acctuniqueid
、Radacct
。username
、Radacct
。groupname
、Radacct
。realm
、Radacct
。nasipaddress
、Radacct
。nasportid
、Radacct
。nasporttype
、Radacct
。acctstarttime
、Radacct
。acctstoptime
、Radacct
。acctsessiontime
、Radacct
。acctauthentic
、Radacct
。connectinfo_start
、Radacct
。connectinfo_stop
、Radacct
。acctinputoctets
、Radacct
。acctoutputoctets
、Radacct
。calledstationid
、Radacct
。callingstationid
、Radacct
。acctterminatecause
、Radacct
。servicetype
、Radacct
。framedprotocol
、Radacct
。framedipaddress
、Radacct
。acctstartdelay
、Radacct
。acctstopdelay
、Radacct
。xascendsessionsvrkey
どこ からradacct
でも。= . そして。= . そして。<> 1Radacct
InternetAccessCode
code
Radacct
username
InternetAccessCode
fk_ship_id
Radacct
fk_ship_id
Radacct
deleted
念のため app_model に包含可能な動作も追加しましたが、違いはありませんでした。