سؤال

لديّ جدولين ، صفحتين ووظائف في 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 ، ثم يتم حله. لذا فإن إضافة مكون إضافي أمام نموذج البرنامج المساعد هو ممارسة جيدة جدًا ،

شكرا ، فيجاي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top