【发布时间】:2013-11-20 07:15:37
【问题描述】:
看来,我太笨了。我在这里和其他论坛中阅读了文档和 maaaaany 问题,但我仍然无法获得具有关联的查找方法来运行... 好像是有初学者的错误……
好的,代码如下:
ScriptParam-Model:
class ZToolScriptParam extends ScriptBuilderAppModel {
public $useTable ="z_tool_script_params";
public $primaryKey = "script_param_id";
public $script_id;
public $parameter_name= "";
public $parameter_type= "";
public $parameter_len= "";
public $parameter_right_len= "";
public $belongsTo = array(
'ScriptBuilder.ZToolScript' => array(
'className' => 'ScriptBuilder.ZToolScript',
'foreignKey' => 'script_id',
)
);
public $validate = array(
);
}
脚本模型:
class ZToolScript extends ScriptBuilderAppModel {
public $useTable ="z_tool_scripts";
public $primaryKey = "script_id";
public $script_name= "";
public $script_path= "";
public $script_file= "";
public $validate = array(
'script_name' => array(
'rule' => 'notEmpty'
),
);
public $hasMany = array(
'ScriptBuilder.ZToolScriptParam' => array(
'className' => 'ScriptBuilder.ZToolScriptParam',
'foreignKey' => 'script_id',
'dependent' => false
)
);
}
我希望在调用 find-method 时得到模型和相关模型。
$scripts = $this->ZToolScript->find('all');
但我没有得到相关的模型:
Array
(
[0] => Array
(
[ZToolScript] => Array
(
[script_name] => test_sp2
[script_path] => \webroot\scripte\
[script_file] => test_sql.txt
[script_id] => 1
)
)
我希望我犯了一个简单的错误,但不幸的是我没有看到错误。有人可以帮帮我吗?
问候
V
编辑:1
我更正了“ZToolScript”的链接。
编辑:2
添加模型的表模式:
CREATE TABLE [dbo].[z_tool_scripts](
[script_name] [nvarchar](50) NULL,
[script_path] [nvarchar](255) NULL,
[script_file] [nvarchar](255) NULL
)
GO
ALTER TABLE dbo.z_tool_scripts
ADD script_id INT IDENTITY
ALTER TABLE dbo.z_tool_scripts
ADD CONSTRAINT PK_z_tool_scripts
PRIMARY KEY(script_id)
GO
------------------------------------------------------------------------
CREATE TABLE [dbo].[z_tool_script_params](
[parameter_name] [nvarchar](50) NULL,
[parameter_type] [nvarchar](50) NULL,
[parameter_len] [int] NULL,
[parameter_right_len] [nchar](10) NULL,
[script_id] [int] NOT NULL,
[change_date] [date] NULL)
GO
ALTER TABLE dbo.z_tool_script_params
ADD script_param_id INT IDENTITY
ALTER TABLE dbo.z_tool_script_params
ADD CONSTRAINT PK_z_tool_script_params
PRIMARY KEY(script_param_id)
ALTER TABLE dbo.z_tool_script_params
add constraint z_tool_script_params_script_id_FK FOREIGN KEY ( script_id ) references z_tool_scripts(script_id)
编辑 3:
好的,这是一个很长的问题: 我还有一个类似的问题。我尝试创建一个多对多关联:
<?php
App::uses('ProjectAdminAppModel', 'ProjectAdmin.Model');
class ZToolProject extends ProjectAdminAppModel {
public $useTable ="z_tool_project_steps";
public $primaryKey = "id";
public $name= "";
public $desc = "";
public $activ_step = true;
public $order = 0;
public $project_id;
public $hasAndBelongsToMany = array(
'ZToolScript' =>
array(
'className' => 'ScriptBuilder.ZToolScript',
'joinTable' => 'z_tool_psteps_scripts',
'foreignKey' => 'step_id',
'associationForeignKey' => 'script_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'with' => ''
)
);
}
连接的脚本模型与上面描述的相同。 下面是更进一步的 Create-SQL-Scripts:
CREATE TABLE [dbo].[z_tool_project_steps](
[name] [nvarchar](50) NULL,
[desc] [text] NULL,
[activ_step] [bit] NULL,
[order] [int] NULL,
[project_id] [int] NULL,
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE dbo.z_tool_project_steps
ADD id INT IDENTITY
ALTER TABLE dbo.z_tool_project_steps
ADD CONSTRAINT PK_z_tool_projects_steps
PRIMARY KEY(id)
ALTER TABLE dbo.z_tool_project_steps
add constraint z_tool_project_steps_project_id_FK FOREIGN KEY ( project_id ) references z_tool_projects(id)
CREATE TABLE [dbo].[z_tool_psteps_scripts](
[step_id] [int] NULL,
[script_id] [int] NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.z_tool_psteps_scripts
ADD con_id INT IDENTITY
ALTER TABLE dbo.z_tool_psteps_scripts
ADD CONSTRAINT PK_z_tool_psteps_scripts
PRIMARY KEY(con_id)
ALTER TABLE dbo.z_tool_psteps_scripts
add constraint z_tool_psteps_scripts_script_id_FK FOREIGN KEY ( script_id ) references z_tool_scripts(script_id)
ALTER TABLE dbo.z_tool_psteps_scripts
add constraint z_tool_psteps_scripts_step_id_FK FOREIGN KEY ( step_id ) references z_tool_project_steps(id)
问题似乎是一样的。我也没有与正常的查找方法相关联。是主键问题吗?我无法想象,这是一个如此大的问题。 Pleeeeeease 谁能帮帮我???
【问题讨论】:
-
您的
ZToolScripts模型与ZToolScripts模型相关联,这实际上是您想要实现的吗?如果是这样,你的桌子就不对了。 -
哦,是的,那是错误的......我更正了链接。但我仍然没有得到相关的模型。
-
我不认为这是问题所在,但是......为什么你的模型使用复数名称而不是蛋糕约定要求的单数名称?另外:您收到任何警告吗?
-
嗯,我真的不知道...复数没有直接的原因。我知道约定......不,没有任何警告,我有调试模式“2”。好像蛋糕不知道,有什么关联。也许我应该提到我使用 mssql。我还自己在数据库中创建了外键关系。但没有任何帮助。 :(
-
你试过
ContainableBehavior吗?
标签: cakephp model associations