我开始学习新的cakephp 3.x. 我想这样做:
$data = $this->users->find('all');//i want to get user title name
debug($data->toArray());//but i use associations. It is not join.
我的协会代码:
use Cake\ORM\Table;
use Cake\Validation\Validator;
class UserTitlesTable extends Table
{
public function initialize(array $config) {
$this->table('user_titles');
$this->hasMany('Users');
}
}
use Cake\ORM\Table;
use Cake\Validation\Validator;
use Cake\ORM\Query;
class UsersTable extends Table
{
public function initialize(array $config) {
$this->table('users');
$this->hasOne('UserTitles');
}
}
我的表名和行名:table = users,Row = user_title_id,table = user_titles Row = id
我不写连接。我如何自动加入。
答案 0 :(得分:3)
您需要阅读文档works。问题是协会看到你有:
用户拥有一个UserTitles,ok用户有一个标题。
UserTitles hasMany User,titles has has this not not not relation。
糟糕的关联
你这么说:
表用户行:id,user_title_id
table user_titles rows:id,user_id
这不应该发生
应该是:
用户拥有一个UserTitles,ok用户有一个标题
UserTitles属于用户,或者如果需要,可以使用BelongsToMany。
现在在你的表中:
表用户行:id
table user_titles rows:id,user_id
use Cake\ORM\Table;
use Cake\Validation\Validator;
class UserTitlesTable extends Table
{
public function initialize(array $config) {
$this->table('user_titles');
$this->displayField('id');
$this->primaryKey(['id', 'user_id']);
$this->belongsTo('Outputs', [
'foreignKey' => 'user_id',
'joinType' => 'INNER'
]);
}
}
use Cake\ORM\Table;
use Cake\Validation\Validator;
use Cake\ORM\Query;
class UsersTable extends Table
{
public function initialize(array $config)
{
$this->table('users');
$this->displayField('id');
$this->primaryKey('id');
$this->hasOne('UserTitles', [
'foreignKey' => 'user_id'
]);
}
}
并且这种关系应该是工作
$data = $this->Users->UserTitles->find('all')->toArray();