Cakephp - استدعاء وظيفة النموذج في habtm
-
26-09-2019 - |
سؤال
لديّ جدولين ، صفحتين ووظائف في HABTM وينضم إليها باستخدام TABLE PAGES_POSTS.
يحتوي نموذج صفحتي جنبًا إلى جنب مع تعريف HABTM على وظيفة ..
class Page extends AppModel
{
var $name = "Page";
......
......
function callthis()
{
return $this->find('all');;
}
}
من وحدة تحكم المشاركات الخاصة بي ، أحاول استدعاء هذه الوظيفة ..
class PostsController extends AppController
{
....
....
function index()
{
$returned = $this->Post->Page->callthis();
}
}
وينتج عنه
Warning (512): SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'threadedpages' at line 1 [CORE/cake/libs/model/datasources/dbo_source.php, line 681]
مزيد من الإخراج تصحيح:
شفرة
$out = null;
if ($error) {
trigger_error('<span style="color:Red;text-align:left"><b>' . __('SQL Error:', true) . "</b> {$this->error}</span>", E_USER_WARNING);
سياق
$sql = "threadedpages"
$error = "1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'threadedpages' at line 1"
$out = null
المكالمات
DboSource::showQuery() - CORE/cake/libs/model/datasources/dbo_source.php, line 681
DboSource::execute() - CORE/cake/libs/model/datasources/dbo_source.php, line 266
DboSource::fetchAll() - CORE/cake/libs/model/datasources/dbo_source.php, line 410
DboSource::query() - CORE/cake/libs/model/datasources/dbo_source.php, line 364
Model::call__() - CORE/cake/libs/model/model.php, line 502
Overloadable::__call() - CORE/cake/libs/overloadable_php5.php, line 50
AppModel::threadedpages() - [internal], line ??
PostsController::admin_index() - CORE/plugins/cakey/controllers/posts_controller.php, line 11
Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 204
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 171
[main] - APP/webroot/index.php, line 83
يجب أن يكون استدعاء وظيفة النموذج المرتبطة ممكنًا في CakePhP أليس كذلك؟ إذا خرجنا http://book.cakephp.org/view/1044/hasandbelongstomany-habtm, ، يمكننا أن نرى أن
$this->Recipe->Tag->find('all', array('conditions'=>array('Tag.name'=>'Dessert')));
عندما يمكن استدعاء وظيفة Find () لنموذج العلامة من وحدة تحكم الوصفات المرتبطة بها ، لماذا لا يمكنني الاتصال بـ Callthis () وظيفة نموذج الصفحة من وحدة تحكم المنشورات المرتبطة؟
المحلول 2
كما أشار ستيفان ومورينو ، كانت هناك بالفعل مشكلة في علاقاتي.
وفق http://book.cakephp.org/view/1114/plugin-models, ، إذا كنا بحاجة إلى الرجوع إلى نموذج داخل المكون الإضافي الخاص بك ، نحتاج إلى تضمين اسم المكون الإضافي باسم النموذج ، مفصولة بنقطة.
أشرت إلى النماذج مباشرة دون استخدام البرنامج المساعد. اشكركم جميعا على وقتكم..
نصائح أخرى
المشكلة على الأرجح في علاقاتك. أراهن إذا قمت بذلك
$this->Post->Page->find('all');
ستحصل على أخطاء.
تأكد من تحميل نموذج الصفحة في postscontroller (يجب أن يكون بالقرب من أعلى ملف وحدة التحكم ، قبل أي وظائف):
var $uses = array('Post', 'Page');
ثم يجب أن تكون قادرًا على الاتصال فقط
$this->Page->callthis();
مرحبًا ، لقد واجهت نفس المشكلة.
لقد أضفت البرنامج الإضافي. modelName ، ثم يتم حله. لذا فإن إضافة مكون إضافي أمام نموذج البرنامج المساعد هو ممارسة جيدة جدًا ،
شكرا ، فيجاي