我继承了一个设计怪异(也许不是)的数据库。我正在迁移到cakeHP,但修改它会破坏很多东西,所以我想保持原样。
我有两张衣服和图片的桌子,衣服有这个字段:
clothes
{
ean
reference
reference_name
size
color
}
ean(欧洲文章编号)是唯一的id,每个ean都是参考颜色和尺码的唯一组合,但一个参考有多张不同衣服共享的图片(尺码和颜色,颜色或尺码与图片不一致)。
pictures
{
id
id_reference
reference_name
picture
}
"id_reference"与衣服表中的"reference"字段匹配,但它们没有正式关联,也没有标记为外键。
我有这个函数来检索JSON数组
public function women()
{
$page = $_POST['page'];
$this->autoRender = false;
$articles = TableRegistry::get('Clothes');
$results = $page;
if(is_numeric($page))
{
$pageNumber = (int)$page;
$results = $articles->find('all',['page'=>1])
->select(['reference','nombre'])
->where(['Clothes.reference_name' => 'WOMEN'])
->group('reference')
->limit(10)
->contain(['Pictures']);
}
$this->response->body(json_encode($results));
return $this->response;
}
class ClothesTable extends Table
{
public function initialize(array $config)
{
$this->hasMany('Pictures', [
'className' => 'Pictures',
'foreignKey' => 'id_reference',
'bindingKey' => 'reference'
]);
}
}
我尝试了一些官方文档中的方法,但cakepp抛出了一个错误(这两个表不相关)。现在JSON字符串包含一个空的pictures=[]
数组。有人知道我如何在JSON响应中检索图片列表吗?
我想有两种方法可以做到这一点。要么声明一个显式外键。或者使用普通sql代替cakephp。正如你所说,你没有修改的奢侈,我敢打赌采用sql方式会更好。