需要 cakePHP 一对一关联帮助
cakePHP one to one association help needed
到目前为止,这是 cakePHP 中让我简单的大脑感到困惑的部分。
对于这个例子,我有 2 个表。
vw_penkits 和 vw_bushings
vw_penkits 有一个字段 vw_bushing_id
以下是模型:
class VwPenKit extends AppModel {
var $name = 'VwPenKit';
var $useTable = 'vw_pen_kits';
public $hasOne = 'VwBushing';
}
class VwBushing extends AppModel {
var $name = 'VwBushing';
var $useTable = 'vw_bushings';
public $belongsTo = array (
'PenKit' => array (
'classname' => 'VwPenKit',
'foreignKey => 'vw_bushing_id'
)
);
}
这里是 VwPenKitsController index()
public function index() {
$this->loadModel('VwBushing');
$bushings = $this->VwBushing->find('list');
$this->set(compact('$bushings'));
$this->set('penkits', $this->VwPenKit->find('all'));
}
这是 index.ctp
的代码部分
<td><?php echo $penkit['VwPenKit']['kit_name']; ?> </td>
<td><?php echo $penkit['VwPenKit']['kit_description']; ?> </td>
<td><?php echo $penkit['VwBushing']['code']?></td>
<td><?php echo $penkit['VwPenKit']['modified']; ?> </td>
这是渲染时的错误
笔工具包数据库
版本 0.1
零件号 套件名称 描述 衬套修改动作
DK-PKCP8020 螺栓行动笔 (30 Cal)
Notice (8): Undefined index: VwBushing [APP/View/VwPenKits/index.ctp, line 46] 2015-04-07 11:00:00 查看编辑删除
创建者:迈克·马雷克
联系方式:mike@thewoodartiststudio.com.
©2015 The Wood Artist Studio - 版权所有
同样,一旦我弄清楚了这一点,我就需要一个 add.ctp 和 edit.ctp 来创建一个选择列表,以便用户可以将笔套件与其套管相关联。
我的状态还不够 post 图片
提前致谢
麦克
我不是 100% 确定,但这可能与您在查找中的递归值有关。如果设置为 0,则它只会找到第一层。您需要将其设置为 1 或 2,具体取决于您要查找的深度。
我强烈建议使用 ContainableBehaviour。它会让你的生活变得更轻松。
参见here。
我确实解决了这个问题,它基本上是一个模型问题。一旦我的关系正确,一切正常。
谢谢
迈克
到目前为止,这是 cakePHP 中让我简单的大脑感到困惑的部分。
对于这个例子,我有 2 个表。 vw_penkits 和 vw_bushings
vw_penkits 有一个字段 vw_bushing_id
以下是模型:
class VwPenKit extends AppModel {
var $name = 'VwPenKit';
var $useTable = 'vw_pen_kits';
public $hasOne = 'VwBushing';
}
class VwBushing extends AppModel {
var $name = 'VwBushing';
var $useTable = 'vw_bushings';
public $belongsTo = array (
'PenKit' => array (
'classname' => 'VwPenKit',
'foreignKey => 'vw_bushing_id'
)
);
}
这里是 VwPenKitsController index()
public function index() {
$this->loadModel('VwBushing');
$bushings = $this->VwBushing->find('list');
$this->set(compact('$bushings'));
$this->set('penkits', $this->VwPenKit->find('all'));
}
这是 index.ctp
的代码部分<td><?php echo $penkit['VwPenKit']['kit_name']; ?> </td>
<td><?php echo $penkit['VwPenKit']['kit_description']; ?> </td>
<td><?php echo $penkit['VwBushing']['code']?></td>
<td><?php echo $penkit['VwPenKit']['modified']; ?> </td>
这是渲染时的错误
笔工具包数据库 版本 0.1
零件号 套件名称 描述 衬套修改动作
DK-PKCP8020 螺栓行动笔 (30 Cal)
Notice (8): Undefined index: VwBushing [APP/View/VwPenKits/index.ctp, line 46] 2015-04-07 11:00:00 查看编辑删除
创建者:迈克·马雷克
联系方式:mike@thewoodartiststudio.com.
©2015 The Wood Artist Studio - 版权所有 同样,一旦我弄清楚了这一点,我就需要一个 add.ctp 和 edit.ctp 来创建一个选择列表,以便用户可以将笔套件与其套管相关联。
我的状态还不够 post 图片
提前致谢 麦克
我不是 100% 确定,但这可能与您在查找中的递归值有关。如果设置为 0,则它只会找到第一层。您需要将其设置为 1 或 2,具体取决于您要查找的深度。
我强烈建议使用 ContainableBehaviour。它会让你的生活变得更轻松。
参见here。
我确实解决了这个问题,它基本上是一个模型问题。一旦我的关系正确,一切正常。
谢谢 迈克