我在尝试从另一个关联模型中检索关联的模型数据时遇到问题。
我Donor Model
与BloodGroup Model (belongsTo/hasMany rel)
相关联。
现在,我还有一个与Donation Model
相关联的Donor Model (again, belongsTo/hasMany rel)
。
从Donation Model
,我想从BloodGroup Model
检索数据。
目前仅检索捐赠者相关数据。我的想法是,我不会在捐赠中添加一个血型领域,而是通过捐赠捐赠的捐赠者来映射捐赠的血型组!
我一直在检查containable Behavior
,但我不确定这是否是我能做到的!它似乎用于“包含”和过滤来自关联模型的数据,而不是扩展关联。
任何帮助都非常感激,一如既往!
[编辑]
捐赠者模式
class Donor extends AppModel{
public $belongsTo = array(
'BloodGroup'=> array(
'className' => 'BloodGroup'
),
'DonorType' => array(
'className' => 'DonorType'
)
);
public $hasMany = array(
'Donation' => array(
'className' => 'Donation',
'foreignKey' => 'donor_id',
'order' => 'Donation.created DESC',
'limit' => 10,
'dependent' => true
)
);
捐赠模式
public $belongsTo = array(
'Donor' => array(
'className' => 'Donor',
'counterCache' => true,
)
);
来自捐赠控制者:
public $paginate = array(
'order' => array("Donation.d_date" => 'desc'),
'limit' => 10
);
$this->Paginator->settings = $this->paginate;
$donations = $this->Paginator->paginate('Donation');
$this->set('donations',$donations)
检索结果:
[donations] => Array
(
[0] => Array
(
[Donation] => Array
(
[id] => 1
[donor_id] => 4
etc..
)
[Donor] => Array
(
[id] => 4
[name] => ...
)
)
)
答案 0 :(得分:2)
目前尚不清楚您真正想要获得哪些数据,但要回答您的希望:
“从捐赠模型中,我想从BloodGroup中检索数据 模式“。
因为有相关路径,您可以从Donation模型中获取BloodGroup数据,如下所示:
$this->Donor->BloodGroup->find('all');
或使用Containable:
$this->find('all', array(
'contain' => array(
'Donor' => array(
'BloodGroup'
)
)
));
有很多选择 - 它只取决于你需要什么数据。
有关如何在我的模型中使用find()的详细信息,请参阅此答案:https://stackoverflow.com/a/6577042/673664
(可能有很多方法可以做到这一点 - 这只是我使用的方法,对我来说非常有用)
答案 1 :(得分:0)
如果BloodGroup有很多Donor,如果Donor有很多捐赠,您可以从BloodGroup检索捐赠数据,但在使用$this->Donation->recursive = 2;
方法之前必须将递归设置为2(find
)。如果您想从捐赠中输出血型数据。试试吧。