Dar*_*ton 3 php mysql sql activerecord cakephp
在一个ActiveRecord(CakePHP的味)设置我有视频和二进制位HasAndBelongsToMany关联安装:仓可以存储ň到影片的引用,和视频可以属于ñ垃圾箱.
我需要能够手动设置和存储特定彬内的视频的显示顺序(所以客户端可以有自己的影片在宾内以特定的顺序.)我最初的想法是建立在滨存储的字段视频ID数组按需要显示的顺序排列.这是处理这个问题最有效的方法吗?
如果是这样,当我再拿到HABTM查询结果,究竟是重新整理干净/最有效的方式返回查询的ID的数组排序匹配吗?
与Bin关联的视频将作为数组返回:
[Video] => Array
(
[0] => Array
(
[id] => 49b2de95-0338-48b9-bc88-01ba35664358
...
)
[1] => Array
(
[id] => 49b1ccad-b770-410e-be46-03a035664358
...
)
Run Code Online (Sandbox Code Playgroud)
或者有没有更好的方法来实现我在不使用HABTM关联的情况下尝试做的事情?
提前致谢 -
当HABTM变得复杂时该怎么办?
默认情况下,在保存HasAndBelongsToMany关系时,Cake将删除连接表上的所有行,然后再保存新的行.例如,如果您有一个有10个孩子关联的俱乐部.然后,您将与2名儿童一起更新俱乐部.俱乐部只有2个孩子,而不是12个孩子.
另请注意,如果要为连接添加更多字段(创建时或元信息),可以使用HABTM连接表,但重要的是要了解您有一个简单的选项.
两个模型之间的HasAndBelongsToMany实际上是通过hasMany和belongsTo关联关联的三个模型的简写.
考虑这个例子:
Child hasAndBelongsToMany Club
Run Code Online (Sandbox Code Playgroud)
另一种看待这种情况的方法是添加会员模型
Child hasMany Membership
Membership belongsTo Child,
ClubClub hasMany Membership.
Run Code Online (Sandbox Code Playgroud)
这两个例子几乎完全相同.它们在数据库中使用相同数量和命名的字段以及相同数量的模型.重要的区别在于"连接"模型的命名方式不同,而且它的行为更具可预测性.
在您的示例中,您需要一种方法来添加和删除而无需编辑其他用户视频链接,因此标准habtm将不适合您.为此"join"创建一个类似于上述Membership模型的模型.此外,如果您添加了一个权重字段,您可以使用有序行为(我写的)来为每个bin订购每组视频.然后,您将使用以下字段
id, bin_id, video_id, weight
Run Code Online (Sandbox Code Playgroud)
并在行为配置中将bin_id设置为"foreign_key".祝好运
| 归档时间: |
|
| 查看次数: |
3557 次 |
| 最近记录: |