2015-02-06 67 views
0

每個Artikel只有一個Barcode。由於幾個原因,我想拆分Artikel模型和Barcode模型。當我從得到artikel表中的內容時,它返回一個包含正確條形碼部分的數組。但是,當我嘗試查找條形碼時,數組的artikel部分是空的。CakePHP與不同表有關係

這就是我的意思是:

// $this->Artikel->findById(102); 
array(
    'Artikel' => array(
     'id' => '102', 
     'name' => 'Spätburgunder Spätlese Barrique', 
     'erzeuger_id' => '679', 
     'volumen_id' => '44', 
     'artikelgruppe_id' => '17' 
    ), 
    'Barcode' => array(
     'id' => '1', 
     'artikel_id' => '102', 
     'barcode' => '123456' 
    ) 
) 

// $this->Barcode->findByBarcode(123456); 
array(
    'Barcode' => array(
     'id' => '1', 
     'artikelnummer' => 'DE51076', 
     'barcode' => '123456' 
    ), 
    'Artikel' => array(
     'artikelnummer' => null, // this is null 
     'name' => null, // this is null as well 
     'erzeuger_id' => null, // also null 
     'volumen_id' => null, // …… 
     'artikelgruppe_id' => null // null 
    ) 
) 

任何想法,我做錯了什麼?

這些

// Barcode.php 
public $hasOne = array(
    'Artikel' => array(
     'className' => 'Artikel', 
     'foreignKey' => 'artikel_id' 
    ) 
); 


// Artikel.php 
public $hasOne = array(
    'Barcode' => array(
     'className' => 'Barcode', 
     'foreignKey' => 'artikel_id' 
    ) 
); 
+3

我覺得你可以寫一個從條形碼到Artickel的belongsTo關係 – Ananth 2015-02-06 12:26:08

回答

3

文章表 - 編號,名稱,artikelgruppe_id和條形碼錶 - ID,artikel_id,條碼

到有關這些模型的正確方法是:第hasOne條碼和條碼屬於關聯文章

// Artikel.php 
public $hasOne = array(
    'Barcode' => array(
     'className' => 'Barcode', 
     'foreignKey' => 'artikel_id' 
    ) 
); 

// Barcode.php 
public $belongsTo = array(
    'Artikel' => array(
     'className' => 'Artikel', 
     'foreignKey' => 'artikel_id' 
    ) 
); 

這裏article_id是在條碼錶,所以文章hasOne條碼按預期工作。如果您的文章列表中有barcode_id條形碼hasOne文章將工作。

但由於您需要在條碼錶中的article_id字段的文章,您應該使用belongsTo關係。

+0

太棒了!它做到了:) – 2015-02-07 03:25:18

-1

從控制哪些你在做這些召喚的車型?如果你在同一個模型上,那麼是錯誤的,因爲你必須通過模型之間的引用進行調用。例如,我asume你是在Artikel模式,讓你的第一個電話是正確的,但第二個應該是$this->Artikel->Barcode->findById(1)