usi*_*sii 6 php cakephp cakephp-1.3 cakephp-2.0 cakephp-2.1
Product Plan ProductPlan
id |name id |name id | product_id | plan_id
1 aplha 1 a 1 1 2
2 bravo 2 b
3 charlie
Run Code Online (Sandbox Code Playgroud)
我想找到ProductPlan的产品名称和计划名称,如果ProductPlan中存在产品的产品ID和计划ID,那么计划和产品的名称将显示,我试了很多,关系b/w表是正确的但我没有'得到确切的数据,查询我用过的那个
$p_plan = $this->ProductPlan->find('all',array(
'conditions'=>array(
'ProductPlan.product_id'=>'Product.product_id'
)
)
);
$this->set('p_plan', $p_plan);
Run Code Online (Sandbox Code Playgroud)
如果有人帮助我,我会非常感激他.提前致谢.
计划关系
class Plan extends AppModel{
public $primaryKey='plan_id';
public $hasMany = array(
'ProductPlan'=>array(
'className' => 'ProductPlan',
'foreignKey' => 'plan_id'
)
);
Run Code Online (Sandbox Code Playgroud)
产品
class Product extends AppModel{
public $primaryKey='product_id';
public $hasMany = array(
'ProductsUser'=>array(
'className' => 'ProductsUser',
'foreignKey' => 'product_id'
),
'ProductsUserNode'=>array(
'className' => 'ProductsUserNode',
'foreignKey' => 'product_id'
),
'ProductPlan'=>array(
'className' => 'ProductPlan',
'foreignKey' => 'product_id'
)
);
Run Code Online (Sandbox Code Playgroud)
用于产品计划
class ProductPlan extends AppModel{
var $primaryKey='product_plan_id';
public $belongsTo = array(
'Product' => array(
'className' => 'Product',
'foreignKey' => 'product_id'
),
'Plan' => array(
'className' => 'Plan',
'foreignKey' => 'plan_id'
)
);
public $hasMany = array(
'ProductPlansUserNode'=>array(
'className' => 'ProductPlansUserNode',
'foreignKey' => 'product_plan_id'
),
);
Run Code Online (Sandbox Code Playgroud)
}
你应该只能使用'包含': -
$p_plan = $this->Product->find('all', array(
'contain' => array('Plan')
));
Run Code Online (Sandbox Code Playgroud)
这将返回您的所有产品及其相关计划.您的产品和计划模型需要hasAndBelongToMany关系.无需为连接表定义模型.
class Product AppModel {
...
public $hasAndBelongsToMany = array('Plan');
...
}
class Plan AppModel {
...
public $hasAndBelongsToMany = array('Product');
...
}
Run Code Online (Sandbox Code Playgroud)
作为旁注,我个人会避免重写CakePHP处理主键的默认方式.最好坚持使用惯例和使用id.
| 归档时间: |
|
| 查看次数: |
5192 次 |
| 最近记录: |