2016-03-27 23 views
0

Bir veritabanını tuhaf (belki de değil) bir tasarımla miras aldım. CakePHP'ye geçiş yapıyorum ama onu değiştirmek çok şeyi kırıyor, dolayısıyla onu olduğu gibi tutmak istiyorum.cakePhp 3 ilgisiz iki mysql tablosunu birleştir (gevşek ilişkili)

clothes 
{ 
ean 
reference 
reference_name 
size 
color 
} 

ean (avrupa makale sayısı) benzersiz id her ean referans renk ve büyüklükte eşsiz kombinasyonu, ama bir başvuru:

ben iki tablo giysi ve resimler, giysi var bu alana sahiptir Farklı kıyafetler tarafından paylaşılmış birden fazla fotoğrafa sahiptir (boyutlar ve renkler, renk veya boyutlar ve resimler arasında bir tutarlılık yoktur).

pictures 
{ 
id 
id_reference 
reference_name 
picture 
} 

"id_reference" giysi tablodaki "referans" alanı ile eşleşen ancak resmen yabancı anahtarları olarak işaretlenmemiş ilgili değildir.

I oficial belgelerinde yöntemlerden bazıları güvenilir bir JSON dizisi

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

almak için bu işlevi vardır, ancak CakePHP'de bir hata (iki tablo ile ilgili değildir) atar. Şu anda JSON dizesi boş bir pictures=[] dizisi içeriyor. JSON yanıtındaki resim listesini nasıl alabilirim bilen var mı?

cevap

1

Sanırım bunu yapmanın iki yolu var. Açık bir yabancı anahtar ilan edersiniz. Veya cakephp'in yerine düz sql kullanın. Dediğin gibi lüksün olmadığını söylediğin gibi, sql yolunun daha iyi olduğuna eminim.

+0

Gerçekten düz bir SQL sorgusu yaptım. – Jigzat