小编dfc*_*dfc的帖子

在 CakePHP 3 中检索相关数据 (hasMany)

Events hasMany TicketTypes
TicketTypes belogsTo Events
Run Code Online (Sandbox Code Playgroud)

我正在尝试检索具有相关票证类型的所有事件:

$query= $this->Events
    ->find()
    ->select(['id', 'name'])
    ->autoFields(false)
    ->contain(['TicketTypes' => function($q) { 
        return $q->select(['TicketTypes.id', 'TicketTypes.name']); }])
;
Run Code Online (Sandbox Code Playgroud)

生成的 SQL 查询:

SELECT Events.id AS `Events__id`, Events.name AS `Events__name` FROM events Events
Run Code Online (Sandbox Code Playgroud)

但我的预期是:

SELECT Events.id AS `Events__id`, Events.name AS `Events__name`, TicketTypes.id AS `TicketTypes__id`, TicketTypes.name AS `TicketTypes__name` FROM events Events LEFT JOIN ticket_types TicketTypes ON Events.id = (TicketTypes.event_id)
Run Code Online (Sandbox Code Playgroud)

这是我的模型的配置方式:

class EventsTable extends Table
{
    public function initialize(array $config)
    {
        $this->displayField('name');

        $this->addAssociations([
            'hasMany'=> ['TicketTypes']
        ]);
    }
}

class TicketTypesTable …
Run Code Online (Sandbox Code Playgroud)

cakephp associations query-builder cakephp-3.0

5
推荐指数
1
解决办法
2013
查看次数