我正在尝试建立表之间的关系,但无法弄清楚我做错了什么。
我阅读了cakephp3中的文档以及stackoverflow中的大量帖子,但仍然无法获得任何结果。
--------------------------
name |invoices |shares |
var |id |id |
var | |idBill |
--------------------------
该关系应该来自idBill(份额)和ID(发票)
class SharesTable extends Table {
public function initialize(array $config) {
parent::initialize($config);
$this->belongsTo('invoices', [
'className' => 'App\Model\Table\InvoicesTable',
'foreignKey' => 'idBill',
'targetForeignKey' => 'id'
]);
}
}
然后在控制器中尝试将帐单关联方打印到共享中,如下所示:
public function view($id = null)
{
$share = $this->Shares->get($id, [
'contain' => []
]);
var_dump( $share->invoices );
$this->set('share', $share);
}
我只是希望打印出帐单,但我总是得到空值
答案 0 :(得分:1)
您的contain
为空,因此您不会收到任何关联。此外,belongsTo
(和hasOne
)关联的默认实体属性名称是关联名称的单数,加下划线的变体,即invoice
,而不是invoices
。
还建议使用与表别名匹配的关联名称,即Invoices
的{{1}}(大写I
),这样它将自动找到该类并您不必通过InvoicesTable
选项进行指定(对于className
关联也没有targetForeignKey
选项)。
belongsTo
$this->belongsTo('Invoices', [
'foreignKey' => 'idBill'
]);
另请参见