获取cakephp3

时间:2017-01-06 12:24:35

标签: cakephp many-to-many cakephp-3.0 foreign-key-relationship has-many

我有3个表,如A,B和C .. A和B有关系,但A和C没有任何连接。 B和C有关。

在cakephp3中,索引操作仅返回A和B关系。我需要获取表C数据。

表格详情:

  1. Purchase_details
  2. measure_inventories
  3. measurement_lables
  4. Table details image

2 个答案:

答案 0 :(得分:1)

您可以使用contain获取相关表格的数据..

如果您想要关联关联,那么您也可以使用recursive。 但是如果你只想要一个关联,那么你可以试试这个:

$data = $this->PurchaseDetails->find('all')
                    ->contain(['MeasurementInventories' => ['MeasurementLables']])->toArray();

答案 1 :(得分:0)

您必须使用contains()来获取关联的表/模型数据,如: -

$data = $this->PurchaseDetails->find()->contain(['MeasurementInventories' => ['MeasurementLables']])->toArray();

如果您的要求是仅显示来自measurement_lables的数据,那么您可以添加select()以获得所需的模型数据,如: -

$data = $this->PurchaseDetails->find()->contain(['MeasurementInventories' => ['MeasurementLables']])->select(['MeasurementLables.*'])->toArray();

注意: - 在使用contains()时,您应确保模型彼此关联。例如,PurchaseDetails模型应该与MeasurementInventories相关联(belongsTo,hasMany,hasOne等...)

$this->belongsTo('PurchaseDetails', [
    'className' => 'MeasurementInventories',
    'foreignKey' => 'columnName'            
]);

MeasurementInventories与MeasurementLables相关联。

$this->belongsTo('MeasurementInventories', [
    'className' => 'MeasurementLables',
    'foreignKey' => 'columnName'            
]);