Вы можете установить отношения таким образом, но вам нужно использовать более подробное определение отношений.Посмотрите на данные, которые передаются при построении Отношения , чтобы узнать подробности об опциях, которые вы можете использовать.
class Users extends \lithium\data\Model {
public $belongsTo = array(
"Cities" => array(
"to" => "app\models\Cities",
"key" => "city_id",
),
"States" => array(
"from" => "app\models\Cities",
"to" => "app\models\States",
"key" => array(
"state_id" => "id", // field in "from" model => field in "to" model
),
),
);
}
class Cities extends \lithium\data\Model {
public $belongsTo = array(
"States" => array(
"to" => "app\models\States",
"key" => "state_id",
),
);
}
class States extends \lithium\data\Model {
protected $_meta = array(
'key' => 'id', // notice that this matches the value
// in the key in the Users.States relationship
);
}
При использовании отношений Состояния на Пользователях обязательно всегда указывайтеотношения городов в том же запросе.Например:
Users::all( array(
'with' => array(
'Cities',
'States'
)
) );
Я никогда не пробовал это с использованием отношений ownTo, но у меня это работает, используя отношения hasMany таким же образом.