7

mam pewne problemy ze znalezieniem rozwiązania dla tego ..CakePHP Fatal Error Wezwanie do schematu funkcji członka() na brak przedmiotu

Error: Call to a member function schema() on a non-object 
File: /Cake/Model/Model.php 
Line: 3627 

W mojej bazy danych istnieją tabele artykuły, hashtagów i Stowarzyszenia articles_hashtags z foreignkeys id_artykulu i hashtag_id .. Więc staram się uzyskać informacje co hashtagami każdy artykuł ma ..

moim artykule model

class Article extends AppModel { 
public $hasAndBelongsToMany = array(
    'Hashtag' => 
     array(
      'className' => 'Hashtag', 
      'joinTable' => 'articles_hashtags', 
      'foreignKey' => 'article_id', 
      'associationForeignKey' => 'hashtag_id', 
      'unique' => true, 
      'conditions' => '', 
      'fields' => '', 
      'order' => '', 
      'limit' => '', 
      'offset' => '', 
      'finderQuery' => '', 
      'with' => '' 
       ) 
      ); 
      } 

Artykuł Controller

class ArticleController extends AppController { 
var $name = 'Article'; 
public $helpers = array("Html", "Form"); 
    public function index() 
    { 
    $this->set("posts", $this->Article->find("all")); 

    } 
} 

Dzięki za pomoc !!

Dodatkowo: Jeśli wstawię wygenerowane zapytanie sql select z logu sql debuggera do mojej bazy danych SQL, otrzymam właściwe wyniki .. więc domyślam się, że coś jest nie tak z kontrolerem ?!

+0

nazwa tabeli check Wygląda to błąd literówka – Abhishek

+0

oh no przykro, że literówka właśnie tutaj – tobysas

Odpowiedz

17

Miałem ten sam problem, więc rozebrałem $hasAndBelongsToMany na możliwe minimalne klucze.

Problem polega na tym, że używasz klawisza "z" w tablicy $hasAndBelongsToMany. Usuń ten lub ustawić go na „articles_hashtags”:

class Article extends AppModel { 
    public $hasAndBelongsToMany = array(
    'Hashtag' => 
     array(
      'className' => 'Hashtag', 
      'joinTable' => 'articles_hashtags', 
      'foreignKey' => 'article_id', 
      'associationForeignKey' => 'hashtag_id', 
      'unique' => true, 
      'conditions' => '', 
      'fields' => '', 
      'order' => '', 
      'limit' => '', 
      'offset' => '', 
      'finderQuery' => '', 
      'with' => 'articles_hashtags' 
     ) 
    ); 
    } 

Biblioteka model kodu próbował uzyskać dostęp do wartości z „z” kluczem, który był pusty, stąd błędem non-obiektu.

From CakePHP docs, dotyczące $hasAndBelongsToMany tablicy:

  • z: Określa nazwę modelu tabeli sprzężenia. Domyślnie CakePHP automatycznie utworzy model dla ciebie. Użycie powyższego przykładu będzie nazywane IngredientsRecipe. Za pomocą tego klucza można zastąpić tę domyślną nazwę. Model tabeli łączenia może być użyty tak jak każdy "zwykły" model, aby uzyskać bezpośredni dostęp do tabeli łączenia. Tworząc klasę modelu o takiej nazwie i nazwie pliku, można dodać dowolne niestandardowe zachowanie do wyszukiwań łączenia znaków, na przykład dodając do niego więcej informacji/kolumn.
+0

Tak prosta, miła praca. Otrzymałem to samo i w wyniku wypalenia konstrukcji relacji HABTM, która zawiera puste z ustawieniem ("with" => ''). Godzin debugowania rozwiązano. Rządzisz. – chopstik

0

Czy zainicjalizowany obiekt modelu Artykuł w kontrolerze? Możesz to zrobić, używając pola $ używającego w kontrolerze. Dodaj następujący wiersz w ArticleController:

public $uses = array('Article'); 
+0

hm niestety nie, nadal otrzymuję komunikat o błędzie – tobysas