cakePhp 3加入两个不相关的mysql表(松散相关)

时间:2016-03-27 18:04:24

标签: php mysql json cakephp

我继承了一个奇怪的(可能不是)设计的数据库。我正在迁移到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响应中检索图片列表?

1 个答案:

答案 0 :(得分:1)

我想有两种方法可以做到这一点。要么声明显式外键。或者使用普通的sql代替cakephp。正如你所说,你没有修改的奢侈品,我打赌以sql方式更好。