Vu Minh Vuong
Vu Minh Vuong

Reputation: 81

Association in Cakephp 3x

I'm trying set association in cakephp my db two model:

namespace App\Model\Table;
class UsersTable extends Table {

    public function initialize(array $config)
    {

        $this->hasOne('Scores',[
            'className' => 'Scores',
            'conditions' => '',
            'dependent' => true
        ]);
    }

}

and

class ScoresTable extends Table {
    //var $name = 'Scores';
    public final $connection = ConnectionManager::get('default');
    public function initialize(array $config)
    {
        $this->belongTo('Users',
            'foreignKey' => 'user_code_Student',
            'joinType' => 'INNER',
        );
    }
}

function index in controller:

public function index() {
    //$connection = ConnectionManager::get('default');
    $modelUser = $this->loadModel('Users');
    $dataUser = $modelUser->find('all')->contain(['Score']);
    /*$data = array(
        /*'listUser' => $modelUser->find('all', array(
            'conditions' => array('email LIKE' => '%gmail.com'),
            'limit' => 2
        )),$connection
                ->execute('SELECT * FROM users WHERE email like :email limit 3', ['email' => '%gmail.com'])
                ->fetchAll('assoc')
        'listUser' => $this->paginate($modelUser->find('all')),
        'title' => 'Demo MVC'
    );*/
    $data = array(
        'listUser' => $dataUser
    );
    $this->set('data', $data);

}

When I run it, the following error is shown: Users is not associated with Score

Can you help me?

Upvotes: 1

Views: 101

Answers (1)

Manohar Khadka
Manohar Khadka

Reputation: 2195

Your relation looks like invalid.Try this:

users table

public function initialize(array $config)
{

    $this->hasOne('Scores',[
        'foreignKey' => 'user_code_Student'
    ]);
}

scores table

public function initialize(array $config)
{
    $this->belongsTo('Users', // you wrote here belongTo that should be belongsTo instead
        'foreignKey' => 'user_code_Student', // is user_code_Student foreignKey ???
        'joinType' => 'INNER',
    );
}

And also change this:

$dataUser = $modelUser->find('all')->contain(['Scores']); // not Score

Upvotes: 1

Related Questions