在用户模型中:
var $hasMany = array(
'Photo' => array(
'className' => 'Photo',
'foreignKey' => 'owner_id',
...
),
);
在照片模型中:
var $belongsTo = array(
'Owner' => array(
'className' => 'User',
'foreignKey' => 'owner_id',
...
),
);
这里有一个用户有很多照片。 所以我的问题是,这里的别名是'Owner',这让我清楚地理解'User'的确切含义,但这是使用别名的唯一原因吗?它会影响用户模型中的“照片”吗?或如何在/由cakephp使用'所有者'?
我不太明白模型中别名的含义。 感谢您的帮助!
答案 0 :(得分:28)
别名的两个有用场景:
<强> 1。同一模型的多个外键
例如,您的photos
表格有两个字段:created_user_id
&amp; modified_user_id
var $belongsTo = array(
'CreatedUser' => array(
'className' => 'User',
'foreignKey' => 'created_user_id',
...
),
'ModifiedUser' => array(
'className' => 'User',
'foreignKey' => 'modified_user_id',
...
),
);
<强> 2。创建特定于应用程序域的逻辑单词
使用数组中的conditions字段,您可以指定不同类型的模型:
var $hasMany = array(
'ApprovedUser' => array(
'className' => 'User',
'foreignKey' => 'group_id',
'conditions' => array(
'User.approved' => 1,
'User.deleted' => 0
),
...
),
'UnapprovedUser' => array(
'className' => 'User',
'foreignKey' => 'group_id',
'conditions' => array(
'User.approved' => 0,
'User.deleted' => 0
),
...
),
'DeletedUser' => array(
'className' => 'User',
'foreignKey' => 'group_id',
'conditions' => array('User.deleted' => 1),
...
),
);
在上面的示例中,组模型具有不同类型的用户(已批准,未批准和已删除)。使用别名有助于使您的代码非常优雅。
答案 1 :(得分:3)
它允许您执行$this->Owner->read(null,$userId);
之类的操作。您可以拥有OwnersController和视图/所有者。
这是别名。从某种意义上说,User是db表用户的别名。
一个更好的例子:我有一个CMS,我使用Article,BlogItem和News的表文章。这三个名称是同一个表的别名,允许我设置不同的模型,关系和行为。所以我有一个BlogItemsController和一个NewsController以及一个ArticlesController。