Cakephp:HasOne关系

时间:2010-12-22 20:28:05

标签: cakephp has-one

我正在尝试模拟以下内容:

旅程有一个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'
   )
   );

似乎适用于旅程表的第一个条目。所有其他值都为空。我认为问题出现在此查询中有两个具有相同名称的列。

2 个答案:

答案 0 :(得分:2)

正如Rin所提到的,你需要使用beLongsTo而不是hasOne。这是一个关于Cookbook的Multiple relations to the same model的例子。希望它有所帮助。

答案 1 :(得分:0)

首先,您的链接指向1.2个文档,您可能已下载1.3

1.3中,您可能还应该在belongsToFromCity模型上使用ToCity(但我可能错了,很久以前我用过它了)