php - 在虚拟字段中访问多个外部字段?

标签 php mysql cakephp foreign-keys cakephp-2.4

两个表,在 Cakephp 中正确设置了关系:

属性(...、postcode_id、...)和邮政编码(id、邮政编码、纬度、经度)。

在 Property beforeFind() 中创建的虚拟字段计算搜索邮政编码与记录邮政编码之间的距离。因此,要获取纬度/经度,我需要通过属性记录中的外键从邮政编码表中检索记录,所有这些都在虚拟字段声明内。

我该怎么做?嵌套多个 SELECT?嵌套 find(),哪个可能会更糟?我认为只使用RelatedModel.fieldName 就可以了 - 但事实并非如此。

编辑:属性属于邮政编码,邮政编码有许多属性

(使用cakephp v2.4.4)

Property beforeFind() 中的虚拟字段:

$this->virtualFields['distance'] = 6371 . ' * ACOS(
    (SIN(RADIANS(Postcode.latitude)) * ' . $searchPostcode['latitudeSin'] . ') +
    (COS(RADIANS(Postcode.latitude)) * ' . $searchPostcode['latitudeCos'] . ') *
     COS(RADIANS(Postcode.longitude) - ' . $searchPostcode['longitude'] . ')
)';

最佳答案

您需要在要搜索的表和保存 lng/lat 的表之间进行手动连接,例如 $options['joins'] = array(array('table' => ' model2', 'alias' => 'Model2', 'conditions' => array('Model2.model1_id = Model1.id')));然后在您的虚拟领域中,我认为您应该能够使用 Model2.lat 和 Model2.lng 并使其正常工作。

关于php - 在虚拟字段中访问多个外部字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21463804/

相关文章:

php - 如何将哈弗斯公式放入 laravel 4 查询中

python - 在 Pandas 或 SQL 中保留非英语单词的行

php - 基本 : CakePHP data not being saved nor validation working?

php - 在 cakephp 中使用 maxlength 选项 - 但它在 html 中输出两个 maxlength 值

python - 我可以连接到另一台服务器上的mysql数据库吗?

cakephp - 如何在cakephp 1.2中集成smarty?

php - 如何使用 PDO 准备好的语句使用链接中的 id 号从行获取数据

php - 如何检查用户是否使用 Zend Framework 登录?

php - SELECT COUNT(*) 返回一个对象而不是整数

php - 插入具有不同 ID 的多行