gpt4 book ai didi

php - 选择字段时不会加载关联

转载 作者:行者123 更新时间:2023-11-29 12:36:30 26 4
gpt4 key购买 nike

我在选择字段时尝试获取关联模型时遇到一些问题。我的CakePHP版本是3.0beta2。

与此问题相关的三个 MYSQL 表:

users:
`id` int(11) NOT NULL,
`username` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`role` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
... (more information)

-

presets:
`id` int(11) NOT NULL,
`name` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`user_id` int(11) NOT NULL,
... (more information)

-

favorites:
`id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`preset_id` int(11) NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

我的关联定义如下:

// From FavoritesTable.php
public function initialize(array $config) {
$this->belongsTo('Users');
$this->belongsTo('Presets');
}

// From PresetsTable.php
public function initialize(array $config) {
$this->belongsTo('Users');
$this->hasMany('Favorites');
}

// From UsersTable.php
public function initialize(array $config) {
$this->hasMany('Presets');
$this->hasMany('Favorites');
}

我想要实现的是:

  1. 加载当前登录用户的所有用户信息
  2. 加载该用户的所有收藏夹
  3. 创建一个新字段,将created字段(时间戳)转换为日期
  4. 对于每个收藏夹,加载关联的预设数据

这是我用来执行此操作的代码:

// From UsersController.php
public function favorites() {

$userId = $this->Auth->user('id');

$user = $this->Users->find('all')
->where(['id' => $userId])
->contain([
'Favorites' => function($q) {
return $q
->select(['id', 'preset_id', 'user_id', 'created', 'date' => 'DATE(created)'])
->order(['Favorites.created' => 'DESC']);
},
'Favorites.Presets',
])
->first();

$this->set('user', $user);
}

问题是:当我使用上面代码中的 select 方法时,Favorites.Presets 关联未加载,因此 $user[' favorites'][0]['preset'] 始终为 null

但是,如果我注释掉 select 方法(从而选择所有字段并且不检索 DATE(created)),则会加载关联,并且我可以从预设表中访问信息。

这可能是一个错误还是我做错了什么?
感谢您的帮助!

最佳答案

我认为您需要在select()之后调用->autoFields(true)。如果您希望选择所有其他字段,则这是必需的。这可能被视为一个错误,请尝试在 github 中打开票证。

关于php - 选择字段时不会加载关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26703421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com