Ben find (bütün) tarafından model verileri almak istiyorum, ama kullanıcı tablo alanlarının sadece kısıtlı bir set almak gerekir. Bu kolay:
$ret = $this->find('all',array('fields'=>array(
'Employee.id','Employee.address_id'
)));
Ama bu modeli (Çalışanlar modeli) aynı zamanda bir belongsTo ilişki vardır:
var $belongsTo = array(
'Address' => array(
'className' => 'Address',
'foreignKey' => 'address_id',
'fields' => array('Address.full_name')
)
);
Ben Address.full_name
alan benim de zorlama verilere görünmesini istiyorum. Ama () yukarıdaki arama Bul ile çalışmaz ve bir hata (SQL hatası Bilinmeyen sütun 'Address.full_name' alan listesindeki 'in: 1054) atar Bu çalışırken:
'fields'=>array('Employee.id','Employee.address_id','Address.full_name')
Herkes bu çözmek için nasıl bilir?
EDIT: Tamamen Address.full_name sanal bir alan olduğunu unuttum. Bu işe yaramazsa neden Cakephp üretilen SQL baktığımızda, çok açık:
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
Adres modelde, FULL_NAME bu gibi tanımlanır:
var $virtualFields = array(
'full_name' => 'CONCAT_WS(" ", Address.firstname, Address.surname)'
);
Öyleyse, soru şudur: bulmak için verilen Alan listesi içinde (yabancı mankenin) sanal alanlar () dahil etmek mümkün değil CakePHP hata mı?