每个Artikel
只有一个Barcode
。由于多种原因,我想拆分Artikel
模型和Barcode
模型。当我从artikel表中find()
时,它返回一个包含正确条形码部分的数组。但是当我试图找到条形码时,数组的artikel部分被取消了。
这就是我的意思:
// $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'
)
);
答案 0 :(得分:3)
文章表 - id,name,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
位于条形码表中,因此Article hasOne Barcode按预期工作。如果你的文章表中有barcode_id
,条形码有一篇文章会有效。
但是,由于您需要条形码表中article_id
字段中的文章,因此您应该使用belongsTo关系。
答案 1 :(得分:-1)
你从哪个控制器那里打电话?如果您使用的是同一型号则会出错,因为您必须通过模型之间的引用进行调用。例如,我认为您属于Artikel
模型,因此您的第一个电话是正确的,但第二个应该是$this->Artikel->Barcode->findById(1)