File 这是否也适用于CRUD?
我正在尝试创建一个新模型,该模型连接到表并使用CRUD显示它们,如下所示 我错过了什么?这对文件存储不起作用吗?b) 积垢?还是c) 有一个客户联系表:File 这是否也适用于CRUD?,file,join,crud,traversal,atk4,File,Join,Crud,Traversal,Atk4,我正在尝试创建一个新模型,该模型连接到表并使用CRUD显示它们,如下所示 我错过了什么?这对文件存储不起作用吗?b) 积垢?还是c) 有一个客户联系表: class Model_Contact extends Model_Table { public $table='customercontact'; function init(){ parent::init(); $this->addField('ContactDate')-
class Model_Contact extends Model_Table {
public $table='customercontact';
function init(){
parent::init();
$this->addField('ContactDate')->type('date')->caption('Contact Date');
$this->addField('ContactNotes')->caption('Notes');
}
}
还有一个contactattachments表:
class Model_ContactAttachments extends Model_Table {
public $table='contactattachments';
function init(){
parent::init();
$this->addField('ContactID');
$this->add('filestore/Field_File','FilestoreID')->caption('Upload File');
}
}
这是一个组合表,按照我所理解的示例:
class Model_Contact extends Model_Table {
public $table='customercontact';
function init(){
parent::init();
$this->addField('ContactDate')->type('date')->caption('Contact Date');
$this->addField('ContactNotes')->caption('Notes');
$detail = $this->join('ContactAttachments.ContactID');
$detail->add('filestore/Field_File','FilestoreID')->caption('Upload File');
}
}
导致此错误的原因:
应用程序错误:未为此对象定义方法
异常逻辑,代码:0
Additional information:
class: SQL_Relation
method: addExpression
arguments:
0: ContactAttachments.FilestoreID_text
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib\AbstractObject.php:846
Stack trace:
File Object Name Stack Trace
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/BaseException.php :63 Exception_Logic Exception_Logic->collectBasicData(Null)
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/AbstractObject.php :545 Exception_Logic Exception_Logic->__construct("Method is not defined for this object", Null)
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/AbstractObject.php :846 asol_index_tabs_view_htmlelement_4_crud_model_contact__C SQL_Relation->exception("Method is not defined for this object", "Logic")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib\Field/Reference.php :30 asol_index_tabs_view_htmlelement_4_crud_model_contact__C SQL_Relation->__call("addExpression", Array(1))
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib\Field/Reference.php :30 asol_index_tabs_view_htmlelement_4_crud_model_contact__C SQL_Relation->addExpression("ContactAttachments.FilestoreID_text")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4-addons\filestore\lib\Field/File.php :7 ead9409b__act__C_ContactAttachments.FilestoreID filestore\Field_File->setModel("filestore/File", "url")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/AbstractObject.php :306 ead9409b__act__C_ContactAttachments.FilestoreID filestore\Field_File->init()
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\lib\Model/Contact.php :19 asol_index_tabs_view_htmlelement_4_crud_model_contact__C SQL_Relation->add("filestore/Field_File", "ContactAttachments.FilestoreID")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/AbstractObject.php :306 asol_index_tabs_view_htmlelement_4_crud_model_contact Model_Contact->init()
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/AbstractObject.php :400 asol_index_tabs_view_htmlelement_4_crud CRUD->add("Model_Contact")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/AbstractView.php :92 asol_index_tabs_view_htmlelement_4_crud CRUD->setModel("Contact")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib\View/CRUD.php :220 asol_index_tabs_view_htmlelement_4_crud CRUD->setModel("Contact")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\page/index.php :29 asol_index_tabs_view_htmlelement_4_crud CRUD->setModel("Contact")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/AbstractObject.php :306 asol_index page_index->init()
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/ApiFrontend.php :130 asol Admin->add("page_index", "index", "Content")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/ApiWeb.php :428 asol Admin->layout_Content()
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/ApiFrontend.php :39 asol Admin->addLayout("Content")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/ApiWeb.php :275 asol Admin->initLayout()
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb/index.php :15 asol Admin->main()
Note: To hide this information from your users, add $config['logger']['web_output']=false to your config.php file. Refer to documentation on 'Logger' for alternative logging options
在join中,必须使用表名,而不是类名
function join($foreign_table, $master_field=null, $join_kind=null, $_foreign_alias=null,$relation=null){
你说的对:加入。。。非常感谢。这修复了连接:$detail=$This->join('contactattachments.ContactID','id');但是,当使用“add”试图让filestore在联接表上工作时,我仍然需要找出原始问题(方法未定义…)。它可以很好地处理主要的一点是,我希望能够将多个文件附加到一个联系人记录。使用addField()方法而不是add(),因为您正在尝试添加类,但需要添加字段。当我使用addField时,我只得到一个普通字段,而不是添加文件附件的按钮,就像我在其他地方使用filestore一样。谢谢。您并没有提到要将按钮添加到每一行(如果我理解正确的话)。我可能错了,但我认为您可以尝试向crud添加一列,比如$crud->addColumn('button','your_field_name','add file');。看来这样做是不可能的(至少现在是这样)。问题是,当您添加(filestore)时,也会创建addExpression(在filestore插件中)。并且不能在SQL_关系类中使用addExpression。您只能将(文件存储)添加到模型类。