我继承了一个奇怪的(可能不是)设计的数据库。我正在迁移到cakePHP,但修改它会破坏很多东西,所以我想保持原样。
我有两张桌子的衣服和图片,衣服上有这个字段:clothes
{
ean
reference
reference_name
size
color
}
ean(欧洲文章编号)是唯一的id,每个ean都是参考颜色和大小的独特组合,但参考有多个图片,由不同的衣服共享(大小和颜色,没有一致性)颜色或大小和图片)。
pictures
{
id
id_reference
reference_name
picture
}
" id_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'
]);
}
}
我在官方文档中尝试了一些方法但是cakephp会抛出一个错误(两个表没有关联)。现在,JSON字符串包含一个空的pictures=[]
数组。有谁知道如何在JSON响应中检索图片列表?
答案 0 :(得分:1)
我想有两种方法可以做到这一点。要么声明显式外键。或者使用普通的sql代替cakephp。正如你所说,你没有修改的奢侈品,我打赌以sql方式更好。