gpt4 book ai didi

php - cake php 列出数据及其与逗号分隔 id 相关的值

转载 作者:行者123 更新时间:2023-11-29 13:28:07 24 4
gpt4 key购买 nike

我的数据库有与多个城市相关的类别表。在类别表中,城市列具有逗号分隔的 ID,例如 1, 2, 3。当我从类别表中检索数据时,我希望城市列包含相应的城市名称而不是城市 ID。

$categoryDetails = $this->Category->find('first',array('conditions'=>array('slug'=> $slug)));

Array
(

[Category] => Array
(
[id] => 10
[parent_id] => 2
[city] => 2, 3, 4, 5, 6, 7, 8, 9, 10
[slug] => college
[type] =>
[lft] => 31
[rght] => 32
[name] => College
[description] => College


[image_name] => 1376938860_1185824_431052847008731_328184125_n.jpg
[created] => 1376938860
[modified] => 1376938860
)

)

最佳答案

CakePHP 旨在处理模型关系,您所做的完全规避了 Cake 的设计目的。此外,通常您不希望通过将 id 存储在逗号分隔列表中来链接单独表中的条目。 http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html

如果一座城市只属于一个类别,请使用 hasMany 关系。如果一个城市可以属于多个类别,请使用 HABTM 关系。

我猜您可能想要的是 HABTM 关系。从categories 表中删除city 字段,并创建一个包含字段category_id 和city_id 的附加categories_cities 表。对于您给出的示例,它应该如下所示:

 category_id  |  city_id
10 | 2
10 | 3
10 | 4
10 | 5
10 | 6
10 | 7
10 | 8
10 | 9
10 | 10

然后将以下内容添加到您的类别模型中:

 public $hasAndBelongsToMany = array(
'City' =>
array(
'className' => 'City',
'joinTable' => 'categories_cities',
'foreignKey' => 'city_id',
'associationForeignKey' => 'category_id',
'unique' => true,
)
);

建立关系后,假设模型的递归属性设置为 0 或更高,当您查找该类别时,Cake 会自然地获取与该类别相关的城市。 (默认情况下,它设置为 1。)或者,您可以使用可包含行为。

关于php - cake php 列出数据及其与逗号分隔 id 相关的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19852414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com