我有兩個表:internet_access_codes和radacct。
的internet_access_codes的hasMany radacct記錄。
聯接是internet_access_codes.code = radacct.username AND internet_access_codes.fk_ship_id = radacct.fk_ship_id
我創建了2種型號,想分別使用$hasMany
和$belongsTo
使相關radacct記錄將獲取和internet_access_codes記錄時拉。
下面的代碼:
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'
)
),
);
}
當我find()
從internet_access_codes我期待有一個記錄它給我的所有相關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
(
)
)
Error: Warning (512): SQL Error: 1054: Unknown column 'InternetAccessCode.code' in 'where clause' [CORE/cake/libs/model/datasources/dbo_source.php, line 684]
Query: 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
FROMradacct
ASRadacct
WHEREInternetAccessCode
.code
=Radacct
.username
ANDInternetAccessCode
.fk_ship_id
=Radacct
.fk_ship_id
ANDRadacct
.deleted
<> 1
在app_model我還增加了中可容納的行爲,以防萬一,但它並沒有區別。
請發表您的'find()'。 – Dunhamzzz