CakePHP:控制器中的多个模型 Action:add
CakePHP: Multiple Model in Controller Action:add
我最近才开始使用 CakePHP。框架让事情变得简单,但今天我发现自己有一个新问题。
如果 Project
模型有 image
,则可以在 $this->data['Project']['image']
之类的地方访问它。由于 1 个项目只有 1 个图像,它可以是项目 table 本身的一个字段。
但是如果 Project
有一个集合 images
呢?不会是另一个 table 说 Gallery
吗?那么我们这里说的就是两个Model。
对于前面的情况,图片可以很容易地上传到project/add
,将文件名存储到projects
.image
。事情发生在项目模型和项目控制器中。
现在添加 Project
和 Gallery
时 cake 的方法如何?
我不确定如何阅读您的问题,您是在询问数据库设计还是 CakePHP 关联?但是,假设您的项目只有一个画廊,它将是一个 hasOne 关联,所需的数据库字段将是 this
Project.id -> Gallery.project_id
项目模型中的关联为:
$hasOne = ['Gallery' => ['foreignKey' => 'project_id']];
图库模型中的关联将是:
$belongsTo = ['Project' => ['foreignKey' => 'project_id']];
只要您的字段遵循框架的命名约定,您就不需要声明它们,cake 会自动为您检测正确的字段。
But what about if Project has a collection of images? Wouldn't it be another table say Gallery? Then we're talking about two Model here.
没有 "better" 方法,恕我直言,这取决于您的需要和想要的。理论上你也可以在项目模型中这样做:
$hasMany= ['Image' => ['foreignKey' => 'project_id']];
Read this section,整篇,官方手册,详细描述了table是如何链接在一起的
只有一个建议:我永远不会将文件信息存储在另一个 table 中,但 总是 将我的数据与文件或图像相关联 table。这些文件也不应该作为 blob 存储在数据库中。您可以查看 this plugin 及其文档以获得更详细的解释。
另外,刚开始使用CakePHP,为什么已经有3.0了,还用老2.x版本的框架?我会选择 3.0,因为它与 2.x 分支有点不同。如果你以后必须从 2 切换到 3,你将不得不重新学习一些东西。
我最近才开始使用 CakePHP。框架让事情变得简单,但今天我发现自己有一个新问题。
如果 Project
模型有 image
,则可以在 $this->data['Project']['image']
之类的地方访问它。由于 1 个项目只有 1 个图像,它可以是项目 table 本身的一个字段。
但是如果 Project
有一个集合 images
呢?不会是另一个 table 说 Gallery
吗?那么我们这里说的就是两个Model。
对于前面的情况,图片可以很容易地上传到project/add
,将文件名存储到projects
.image
。事情发生在项目模型和项目控制器中。
现在添加 Project
和 Gallery
时 cake 的方法如何?
我不确定如何阅读您的问题,您是在询问数据库设计还是 CakePHP 关联?但是,假设您的项目只有一个画廊,它将是一个 hasOne 关联,所需的数据库字段将是 this
Project.id -> Gallery.project_id
项目模型中的关联为:
$hasOne = ['Gallery' => ['foreignKey' => 'project_id']];
图库模型中的关联将是:
$belongsTo = ['Project' => ['foreignKey' => 'project_id']];
只要您的字段遵循框架的命名约定,您就不需要声明它们,cake 会自动为您检测正确的字段。
But what about if Project has a collection of images? Wouldn't it be another table say Gallery? Then we're talking about two Model here.
没有 "better" 方法,恕我直言,这取决于您的需要和想要的。理论上你也可以在项目模型中这样做:
$hasMany= ['Image' => ['foreignKey' => 'project_id']];
Read this section,整篇,官方手册,详细描述了table是如何链接在一起的
只有一个建议:我永远不会将文件信息存储在另一个 table 中,但 总是 将我的数据与文件或图像相关联 table。这些文件也不应该作为 blob 存储在数据库中。您可以查看 this plugin 及其文档以获得更详细的解释。
另外,刚开始使用CakePHP,为什么已经有3.0了,还用老2.x版本的框架?我会选择 3.0,因为它与 2.x 分支有点不同。如果你以后必须从 2 切换到 3,你将不得不重新学习一些东西。