2

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

旅程有一个 id、一个 fromCity 和一个 toCity。

我的数据库如下所示:

餐桌之旅:

id | fromCity | toCity
1    2           4
2    4           2

来自City的表:

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'
   )
   );

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

4

2 回答 2

2

正如 Rin 提到的,您需要使用beLongsTo而不是hasOne.Here's a example about Multiple relations to the same model from Cookbook.希望它有所帮助。

于 2010-12-23T01:55:39.617 回答
0

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

1.3中,您可能还应该使用belongsToonFromCityToCityModels (但我可能是错的,很久以前我使用过它:)

于 2010-12-22T20:39:47.427 回答