2016-03-27 12 views
0

私は奇妙な(多分そうではない)デザインのデータベースを継承しました。私はcakePHPに移行していますが、それを変更すると多くのことが分断されますので、そのまま維持したいと思います。cakePhp 3関連のない2つのmysqlテーブルを結合する(緩く関連する)

clothes 
{ 
ean 
reference 
reference_name 
size 
color 
} 

EAN(欧州の資料番号)ユニークなIDである、すべてのEANが基準色とサイズのユニークな組み合わせがあるが、参照:

私は2人のテーブルの服や写真、服を持っているが、この分野を持っています異なる服(サイズと色、色や大きさ、写真との一貫性はありません)によって共有される複数の写真があります。

pictures 
{ 
id 
id_reference 
reference_name 
picture 
} 

"id_reference"は、洋服テーブルの "参照"フィールドと一致しますが、正式には関連付けられていないため、外部キーとしてマークされていません。

Iは、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' 
     ]); 
    } 
} 

を取得するために、この機能を持っている私はoficialドキュメントの方法のいくつかを試みたが、CakePHPは(二つのテーブルが関連していない)エラーをスロー。現在、JSON文字列には空のpictures=[]配列が含まれています。 JSONレスポンスでピクチャリストを取得する方法を知っていますか?

答えて

1

私はこれを行うには二つの方法があると思います。明示的な外部キーを宣言してください。あるいは、cakephpの代わりにplain sqlを使用してください。あなたが修正するために贅沢を持っていないと言うように、私はSQLの方法が良いと思う賭け。

+0

私は実際にはプレーンなSQLクエリをやり終えました。 – Jigzat

関連する問題