我正在尝试模拟以下内容:
旅程有一个id,一个来自城市和一个城市。
我的数据库看起来像这样:
表旅程:
id | fromCity | toCity
1 2 4
2 4 2
表来自城市:
id | name
2 paris
4 london
我为城市和旅程定义了模型。
在我的旅程模型文件中,我想声明$ hasOne归档,以便将fromCity id解析为城市名称。
我试图关注hasOne(http://book.cakephp.org/view/80/hasOne)上的CakePHP教程,但我无法解决如何解决两个外键问题。
有人可以向我解释var $hasone = ...
如何查找此案例吗?
编辑:模特:
<?php class City extends AppModel { var $name='City';} ?>
<?php class Journey extends AppModel { var $name='Journey'; /*var $hasOne=array(...)*/} ?>
编辑2:
var $hasOne = array(
'CityFrom' => array(
'className' => 'City',
'conditions' => 'Journey.fromAirport = CityFrom.id',
'dependent' => true,
'foreignKey' => 'id = Journey.fromCity' ),
'CityTo' => array (
'className' => 'City',
'conditions' => 'Journey.toCity = CityTo.id',
'dependent' => true,
'foreignKey' => 'id = Journey.toCity'
)
);
似乎适用于旅程表的第一个条目。所有其他值都为空。我认为问题出现在此查询中有两个具有相同名称的列。
答案 0 :(得分:2)
正如Rin所提到的,你需要使用beLongsTo
而不是hasOne
。这是一个关于Cookbook的Multiple relations to the same model的例子。希望它有所帮助。
答案 1 :(得分:0)
首先,您的链接指向1.2
个文档,您可能已下载1.3
。
在1.3
中,您可能还应该在belongsTo
和FromCity
模型上使用ToCity
(但我可能错了,很久以前我用过它了)