我想通過find(all)接收模型數據,但用戶應該只能獲得一組受限制的表字段。這很簡單:如何在find字段列表中包含find()中的關聯
$ret = $this->find('all',array('fields'=>array(
'Employee.id','Employee.address_id'
)));
但這種模式(員工模型)也有一個屬於關聯關聯關係:
var $belongsTo = array(
'Address' => array(
'className' => 'Address',
'foreignKey' => 'address_id',
'fields' => array('Address.full_name')
)
);
我想Address.full_name
實地出現在我取得的數據了。這個嘗試時(在「字段列表」未知列「Address.full_name」 SQL錯誤:1054):
'fields'=>array('Employee.id','Employee.address_id','Address.full_name')
任何人,但它不與找工作()調用上面,它拋出一個錯誤知道如何解決這個問題?
編輯:我完全忘了Address.full_name是一個虛擬的字段。縱觀CakePHP的生產SQL,這是顯而易見的,爲什麼它不工作:
SELECT
`Employee`.`id`, `Employee`.`address_id`, `Address`.`full_name`
FROM
`employees` AS `Employee`
LEFT JOIN `addresses` AS `Address`
ON (`Employee`.`address_id` = `Address`.`id`)
WHERE 1 = 1
在地址模式,FULL_NAME的定義是這樣的:
var $virtualFields = array(
'full_name' => 'CONCAT_WS(" ", Address.firstname, Address.surname)'
);
那麼接下來的問題是:是它是一個CakePHP的bug,它不能在提供給find()的字段列表中包含(外國模型)的虛擬字段?
我會把所有'字段'放在find()調用中。 – bancer 2010-10-25 11:39:48
我寧願認爲我的地址屬於我,而不是相反。 ;-) – 2010-10-25 12:05:29
@bancer Sry,我不明白你的意思。 @Daniel是的,可能在RL中,但不在我的應用程序中:P – joni 2010-10-25 12:13:04