Alan listesi ile find dernekler () nasıl

0 Cevap php

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ı?

0 Cevap