Hello !
I've been getting this error for some time and after strolling through Internet and this forum, I still can't seem to find any working solution.
So my system is:
- Apache2/PHP7.1.6 server on an Arch linux computer.
- PostgreSQL 9.6.
I made the 'user' table under the schema 'notepad' in the database 'postgres'.
Its structure is
CREATE TABLE notepad.user (
uid SERIAL PRIMARY KEY,
username VARCHAR(60) NOT NULL,
-- subject to changes (Unclear on how to store the e-mail and password yet (about length)...
email VARCHAR(512) NOT NULL,
passwd VARCHAR(512) NOT NULL,
-- signed 2_byte integer, to store the login_method
-- https://www.postgresql.org/docs/8.1/static/datatype.html
login_method SMALLINT NOT NULL
);
My loader is registering the models dir.
My User class is stored under $APP_PATH/models/User.php and is structured as following:
<?php
use Phalcon\Mvc\Model;
/**
* Class User
* Automatically maps to the table 'user'
*/
class User extends Model {
}
The table contains a few valid entries that can be accessed using a classical SQL request like SELECT * FROM notepad.user;
On the controller part, I'm requesting data by simply using $users = User::find();.
What I've tried
Making a custom getSource function
Following the answer here.
I did this code below and it didn't work (same error, error shown at the bottom of the subject).
<?php
use Phalcon\Mvc\Model;
/**
* Class User
* Automatically maps to the table 'user'
*/
class User extends Model {
public function getSource() { return "user"; }
}
Setting the source manually
Following the guide here.
I did this code below and it didn't work (same error, error shown at the bottom of the subject).
<?php
use Phalcon\Mvc\Model;
/**
* Class User
* Automatically maps to the table 'user'
*/
class User extends Model {
public function initialize() { $this->setSource('user'); }
}
Specifying the columns of the table as public properties in the model
Following the guide here.
I did this code below and it didn't work (same error, error shown at the bottom of the subject).
I kept the exact same column names.
<?php
use Phalcon\Mvc\Model;
/**
* Class User
* Automatically maps to the table 'user'
*/
class User extends Model {
public $uid;
public $username;
public $email;
public $passwd;
public $login_method;
}
Upgrading the privileges of the database user used
I did a dedicated user for the project, called notepad and gave him full
privileges over the schema notepad,
but even with the root user postgres (nopasswd), it didn't work.
Error I'm getting (full error /w stack-trace)
Table 'user' doesn't exist in database when dumping meta-data for User
#0 [internal function]: Phalcon\Mvc\Model\MetaData\Strategy\Introspection->getMetaData(Object(User), Object(Phalcon\Di\FactoryDefault))
#1 [internal function]: Phalcon\Mvc\Model\MetaData->_initialize(Object(User), 'user-user', 'user', '')
#2 [internal function]: Phalcon\Mvc\Model\MetaData->readMetaDataIndex(Object(User), 0)
#3 [internal function]: Phalcon\Mvc\Model\MetaData->getAttributes(Object(User))
#4 [internal function]: Phalcon\Mvc\Model\Query->_executeSelect(Array, NULL, NULL)
#5 [internal function]: Phalcon\Mvc\Model\Query->execute()
#6 /srv/http/notepad/app/controllers/ShowcaseController.php(16): Phalcon\Mvc\Model::find()
#7 [internal function]: ShowcaseController->testAction()
#8 [internal function]: Phalcon\Dispatcher->callActionMethod(Object(ShowcaseController), 'testAction', Array)
#9 [internal function]: Phalcon\Dispatcher->_dispatch()
#10 [internal function]: Phalcon\Dispatcher->dispatch()
#11 /srv/http/notepad/public/index.php(45): Phalcon\Mvc\Application->handle()
#12 {main}
Output I'm getting with $this->db->query('SELECT username FROM notepad.user')->fetchAll();
[
{"username":"Artemis","0":"Artemis"},
{"username":"Neko","0":"Neko"},
{"username":"Test","0":"Test"}
]
Thanks for reading this huge text and thanks in advance for any help given!